Discuss
/
JavaScript
/
我的理解
我的理解
Topic source每个函数对象都关联了一个自己的原型对象(创建函数时由执行环境比如浏览器自动创建),
所谓用函数创建对象,只是将创建的对象关联到这个原型对象上,obj.__proto__=fun.prototype ,
后续新对象的使用就跟函数就没多少关联了.
- 1
每个函数对象都关联了一个自己的原型对象(创建函数时由执行环境比如浏览器自动创建),
所谓用函数创建对象,只是将创建的对象关联到这个原型对象上,obj.__proto__=fun.prototype ,
后续新对象的使用就跟函数就没多少关联了.
Cool
java等面向对象编程语言中一般情况下对象的创建都是通过类中的构造函数创建.
虽然js中没有类的概念,但是js中对象的创建一般情况下也是来自于函数创建(即使是直接使用字面量{}这种语法糖写
法) .比如通过
new Foo()
这种方式来创建对象,该方式把创建的对象的引用返回,并且返回对象(newObj)有一个__proto__
属性,改属性值为一个对象(proObj),并且Foo中的属性
prototype
(函数对象也可以有属性,因为它是一个对象,而js中对象就是属性集合)恰好也引用了这个对象proObj(事实上是因为newObj是通过该函数创建,并通过
newObj.__proto__=Foo.prototype=proObj
),然后newObj可以使用proObj中的属性和方法,从而通过原型链达到继承的目的(面向对象核心).