在下面的文章中,Douglas Crockford 创建了一个函数来更接近地模拟 JavaScript 中的原型继承(http://javascript.crockford.com/prototypal.html http://javascript.crockford.com/prototypal.html)。我理解这个概念。但是,一旦使用下面的函数创建了一个新对象,除了使用点/下标表示法之外,如何向该对象添加方法和属性。在我看来,其中任何一个都会产生丑陋的代码。
if (typeof Object.create !== 'function') {
Object.create = function (o) {
function F() {}
F.prototype = o;
return new F();
};
}
newObject = Object.create(oldObject);
那么我需要使用以下符号吗?
newObject.method1 = function(){}
newObject.cnt = 1;
...
还有其他人认为这是向对象添加属性和方法的一种丑陋方式吗?
我知道我可以在技术上传递一个函数,我想为其设置原型,并包含所有方法和变量。
我或多或少试图理解克罗克福德打算如何使用该功能。
var prototypeForNewObject = {
method: function (x) { ... },
prototypeProperty: 42
};
var newObject = Object.create(prototypeForNewObject);
// Adding an instance property
newObject.cnt = 1;
我不会使用 Crock 的版本,而是使用完整的 EcmaScript 5 签名,其中包括一个可选的propertiesObj
争论。看https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/create
您可能会发现该链接中的示例内容丰富。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)