gpt4 book ai didi

javascript 哎呀。构造函数与原型(prototype)设计

转载 作者:行者123 更新时间:2023-12-02 18:21:20 24 4
gpt4 key购买 nike

我可以理解将创建对象作为构造函数和以文字表示法创建对象有什么区别,以及何时最好使用每个定义,但我无法理解以下两种情况之间的区别:

function Obj(){
this.foo = function(){...}
}


function Obj(){}
Obj.prototype.foo = function(){...}

两者都在做同样的事情。两者都将使用相同的 var objNew = new obj(); 进行实例化。

那么每个概念有什么区别以及何时使用?

最佳答案

原型(prototype)由所有实例共享。让我们比较一下:

function Obj(){
this.foo = function(){...}
}
var o1 = new Obj();
var o2 = new Obj();
console.log(o1.foo === o2.foo); // false

function Obj(){}
Obj.prototype.foo = function(){...}
var o1 = new Obj();
var o2 = new Obj();
console.log(o1.foo === o2.foo); // true

使用原型(prototype)意味着一次性声明原型(prototype)属性和函数,然后每个人都共享它。一百万个对象,一个 foo 函数。

“在构造函数中”方法会在每次运行实例时创建一个本地 foo 函数。一百万个对象,一百万个 foo 函数,每个函数都绑定(bind)了自己的对象。

关于javascript 哎呀。构造函数与原型(prototype)设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18796254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com