gpt4 book ai didi

javascript - 对象原型(prototype)链的深度会影响性能吗?

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

几天前,我在这里发布了一个关于 class inheritance 的问题

然后有人提供了一个链接-- a clever script用于 John Resig 的类继承。

然后我尝试使用这个脚本。

但是我发现这个脚本创建的对象会有很深的原型(prototype)链。

我用的是博客中的例子:

var Person = Class.extend({
init: function(isDancing){
this.dancing = isDancing;
},
dance: function(){
return this.dancing;
}
});

var Ninja = Person.extend({
init: function(){
this._super( false );
},
dance: function(){
// Call the inherited version of dance()
return this._super();
},
swingSword: function(){
return true;
}
});

var n=new Ninja(true);
console.dir(n);

使用 Firebug 我发现了这个: enter image description here

所以我想知道对象原型(prototype)链的深度是否会影响性能?

似乎有一个无限循环。

最佳答案

一个构造函数的原型(prototype)是同一个构造函数。所以是的,你正在看一个无限循环。

但是浏览器在解析对象的成员时并不遵循构造函数链,它有一个实际使用的内部指针(有时称为 __PROTO__ 但不要指望它)。 JavaScript 引擎也可能选择编译为机器码,提前解析可能的成员,因此在实际执行期间根本不存在任何链。

我非常怀疑您是否会遇到任何减速。

关于javascript - 对象原型(prototype)链的深度会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8227318/

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