|
|
@ -23,7 +23,7 @@ JavaScript 使用对象模拟函数的的设计代替了一般编程语言中的 |
|
|
|
|
|
|
|
|
|
|
|
但是对于用户使用 `function` 语法或者 Function 构造器创建的对象来说,\[\[call\]\] 和 \[\[construct\]\] 的行为却是相似的 |
|
|
|
但是对于用户使用 `function` 语法或者 Function 构造器创建的对象来说,\[\[call\]\] 和 \[\[construct\]\] 的行为却是相似的 |
|
|
|
|
|
|
|
|
|
|
|
\[\[construct\]\] 的执行过程大致如下: |
|
|
|
\[\[construct\]\] 的执行过程实际上和 new 关键词的执行过程是一致的: |
|
|
|
1. 以 Object.prototype 为原型创建一个对象 |
|
|
|
1. 以 Object.prototype 为原型创建一个对象 |
|
|
|
2. 以新对象为 this,执行函数的 \[\[call\]\] |
|
|
|
2. 以新对象为 this,执行函数的 \[\[call\]\] |
|
|
|
3. 如果 \[\[call\]\] 的返回值是对象则返回该对象,否则返回第一步创建的对象 |
|
|
|
3. 如果 \[\[call\]\] 的返回值是对象则返回该对象,否则返回第一步创建的对象 |
|
|
|