js构造函数理解

     function Demo() {
          this.init=function () {
            console.log('111')
        }
    }

    var demo=new Demo()
    console.log(demo.init())//111

new Demo()等价:

var demo={};
    demo.__proto__=Demo.prototype;
    Demo.call(demo);
console.log(demo.init())

new实例的过程相当于
1.创建一个对象
2.新生成的对象的proto属性赋值为构造函数的prototype属性,使得通过构造函数创建的所有对象可以共享相同的原型
3.修改Demo原型的this指向为demo
那么就可以进行demo.init()方法

demo的原型链是:demo->Demo.prototype->Object.prototype->null

在Javascript中, 通过new可以产生原对象的一个实例对象,而这个实例对象继承了原对象的属性和方法。因此,new存在的意义在于它实现了Javascript中的继承,而不仅仅是实例化了一个对象!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容