Han*_*Sun 5 javascript oop functional-programming prototype prototype-programming
在Javascript中,任何"函数对象"都有一个原型
> F = function() {}
F()
> F.prototype
F {}
Run Code Online (Sandbox Code Playgroud)
但"对象"或"实例"没有原型
> o = {}
Object {}
> o.prototype
undefined
> f = new F()
F {}
> f.prototype
undefined
Run Code Online (Sandbox Code Playgroud)
但是,内置对象"Function"和"Object"有一个原型:
> Function.prototype
Empty()
> Object.prototype
Object {}
Run Code Online (Sandbox Code Playgroud)
这对我来说看起来很混乱.
Function 和"函数对象"有一个原型属性
Object 有一个prototype属性,但"object literal"和"instance object"没有prototype属性
该prototype财产实际上意味着什么?在上面的例子中,不应该prototype的财产f是F?
有没有人有关于如何解释这个的想法?谢谢!
不要将函数的prototype属性与对象的内部原型(将对象放在原型链中)混淆.
Function并且Object是构造函数,因此,它们具有prototype属性,该属性将被指定为使用这些构造函数创建的对象的内部原型.
我推荐Eloquent Javascript的章节"对象的秘密生活",特别是对于这个引用:
重要的是要注意原型与构造函数(通过其
prototype属性)相关联的方式与对象具有原型(可以使用其检索Object.getPrototypeOf)的方式之间的区别.构造函数的实际原型是Function.prototype,因为构造函数是函数.它的prototype属性将是通过它创建的实例的原型,但不是它自己的原型.
| 归档时间: |
|
| 查看次数: |
1013 次 |
| 最近记录: |