奇怪的行为和使用Object的多个实例.在文字对象上创建
Strange behavior and multiple instances using Object.create on literal objects
我正在学习JS中的oop,我知道做多个实例对象的"正确方法"是使用var object = function(){}
,但当我学习时,我正在做不同的事情来学习JS是如何工作的。我将开门见山,隐藏一段与这个问题无关的代码。
var Selectable = {
create: function(type) {
Object.create(this);
this.type = type;
this.id = Math.random().toString(36).replace(/[^a-z]+/g, '').substring(0, 5);
return this;
}
};
但是,如果我这样做:
var Selectable = {
create: function(type) {
var _T = Object.create(this);
this.type = type;
this.id = Math.random().toString(36).replace(/[^a-z]+/g, '').substring(0, 5);
return Object.create(_T);
}
};
它们有不同的id属性。我确实读过object .create()函数,我学到的是它使用模型对象的"原型"创建一个新对象。但是,当我在一行中使用两个object .create()函数创建对象时,为什么会这样呢?
var Selectable = {
create: function(type) {
Object.create(this);
this.type = type;
this.id = Math.random().toString(36).replace([^a-z]+/g, '').substring(0, 5);
return this;
}
};
alert(selectable.create());
你的函数最终返回这个。但这不是创建的对象,它仍然是可选的。在设置对象的id和类型之前,还可以克隆对象。做的事:
var selectable={
create:function(type){
obj=Object.create(this);
obj.type=type;
obj.id=whatever;
return obj;
};
}
相关文章:
- ES6构造函数返回基类的实例
- 添加文字和评论功能更新Div
- KnockoutJS-组件-多个实例
- 为什么无法在TypeScript中导出类实例
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- fluxxor向一个flux实例添加一组以上的操作
- 使用jQuery获取Dropzone实例/对象
- "实例范围”;TypeScript类的getter/setter
- 如何在速度模板中获取LiferayPortlet实例id
- 同一项怎么可能在一个实例中未定义,却在另一个实例上定义
- 如何计算对象文字中的键
- 实例创建(JS)
- 如何创建作用域的动态、基于实例的对象文字
- 通过“;类“"实例”;使用ReactJS组件代替“props”文字
- JavaScript 对象文字实例化
- 与自实例化构造函数相比,使用对象文字是否具有性能优势
- Object.create是否创建对象文字的实例
- 如何实例化对象文字
- 奇怪的行为和使用Object的多个实例.在文字对象上创建
- 引用类/实例而不是对象文字属性的正确方式