gpt4 book ai didi

javascript - 在 Javascript 中使用 Prototype 有什么好处?

转载 作者:行者123 更新时间:2023-11-30 13:24:40 24 4
gpt4 key购买 nike

我阅读了 crockford 关于私有(private)成员(member)的页面 http://javascript.crockford.com/private.html在 Javascript 中得到了一个可能有点相关的问题。为什么开发人员应该使用 Prototype?

例如,

例如,我可以做到这一点

var Foo = new Object();
Foo.bar = function() { alert('Its a bar'); };
var x = Foo;
x.bar();

代替

var Foo = function(){};
Foo.prototype.bar = function(){alert('Its a bar');};
var x = new Foo();
x.bar();

这两个实现做同样的事情。一个与另一个有何不同?这会以任何方式影响继承吗?

最佳答案

当你使用原型(prototype)模式时,只有一个你添加到原型(prototype)的属性实例存在。

// Lets create 1000 functions which do the same thing
for (var i=0;i<1000;i++) {
Foo = new Object();
Foo.bar = function() { alert('Its a bar'); };

var x = Foo;
x.bar();
}

// This is the same as #1, but is more common
function Foo() {
this.bar = function () { alert('It\'s a bar'); };
}
for (var i=0;i<1000;i++) {
var x = new Foo;
x.bar();
}

// Lets create 1 function
var Foo = function(){};
Foo.prototype.bar = function(){alert('Its a bar');};
for (var i=0;i<1000;i++) {
var x = new Foo();
x.bar();
}

原型(prototype)模式有一个缺点,就是不能访问私有(private)成员。

// Lets create 1 function
var Foo = function(){
var private = 4;

this.baz = function () {
alert(private);
}
};
Foo.prototype.bar = function(){alert(private);};

var x = new foo;
x.bar(); // error; `private` is undefined
x.baz(); // ok

关于javascript - 在 Javascript 中使用 Prototype 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8940848/

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