修改使用Object.create()创建的对象原型
Modify the prototype of objects created using Object.create()
var base = function() { };
base.prototype.doStuff = function() {
console.log(1);
};
var foo = Object.create(new base());
console.log(typeof foo); //object
foo.doStuff(); //1
http://jsfiddle.net/xmYQn/我知道还有一些类似的问题,但是我找不到这个问题的答案。
这是可行的,但是如果我想要foo
的类型是function
,这样我就可以添加属性到它的原型吗?换句话说,让它继承base
原型的方法并将它们合并到自己的原型中?
Object.create(new base());
创建一个继承自base
实例(继承自base.prototype
等)的新的普通对象。你几乎不需要这样的东西。
我希望foo的类型是函数
然后将其定义为函数:
function foo() {}
所以我可以添加属性到它的原型?
现在你可以这样做了。
让它从基本原型继承方法,并将它们与自己的原型合并?
没有太多的"合并"。但是你可以创建一个继承自base.prototype
的新对象,将其设置为foo的原型,然后在那里添加你的属性:
foo.prototype = Object.create(base.prototype); // of course, anything that was
// previously set on foo.prototype
// is now lost
foo.prototype.constructor = foo;
foo.prototype.doOtherStuff = function(){…};
…
那么做
var fooInstance = new foo;
fooInstance.doStuff(); // 1
fooInstance.doOtherStuff();
既然我读了这个非常好的系列文章(http://davidwalsh.name/javascript-objects-deconstruction),我会选择这样的:
var Base = {
doStuff : function() {
console.log(1);
}
};
var foo = Object.create(Base);
foo.doStuff = function() {
console.log(2);
};
var foo2 = Object.create(foo);
console.log(typeof foo); //object
foo.doStuff(); //2
foo2.doStuff(); //2
相关文章:
- 在创建对象后附加一个jquery事件
- 错误:自动化服务器可以't创建对象
- 如何在不使用 new 关键字的情况下从函数创建对象
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- 创建对象函数原型和代码是错误的
- 使用Undercore创建对象集合
- 如何在JavaScript中创建对象时使用变量的值
- 正在创建对象的递归列表
- 这两种不同的创建对象文字的方法有什么区别
- ES6 const,用于在JavaScript中创建对象原型;这是一种模式吗
- 使用字符串作为名称创建对象
- 使用参数创建对象
- 如何在JS中创建对象的可变和不可变副本
- 用javascript创建对象的dynamic数组
- Javascript,用vars创建对象的最佳方法
- 离子幻灯片框中未创建对象
- 在创建对象时调用javascript函数
- JavaScript - 有没有办法动态创建对象的新实例
- 为什么使用 Object('123') 创建对象会创建一个 String() 对象,但 typeof 是“对象”
- EmberJS - 在创建对象后添加绑定