我希望能够创建一个类似于传递给它的对象的类,并向此对象添加新方法。oop行为类似构造函数参数类型的类
这里是我到目前为止有:
Node = function(data) {
Node = data;
Node.constructor.prototype = new data.constructor();
Node.constructor.prototype.testProp = "Hello!";
return Node;
};
node = Node('abc');
console.log(node); // abc
console.log(node.testProp); // Hello!
var testArray = [];
testArray.push(node);
console.log(testArray); // ['abc']
请告诉我这个实现的问题?
在本示例中,Node类看起来像一个String,但每个字符串现在都有一个testProp属性。
console.log(node.testProp) // 'Hello!'
console.log("something".testProp) // 'Hello!'
我的问题:
我多么应该实现一个类,会表现得像这是传入构造不会影响同一类的其他对象的对象?
为什么?
为什么我问这个的原因是我想要的元素数据(字符串,数字,数组,对象等)是不使用例如console.log(Node.value);
任何方法或道具访问,相反,我只是想使用console.log(Node);
谢谢!
那么,在你的榜样,你传递一个*原始*值,而不是对象。在不影响相同类型的所有基元的情况下,不能“扩展”原始值。如果你使用实际的对象,你可能只是想直接给它分配新的属性,而不是它的原型。但我想我并不真正了解“看起来像对象的类”是什么意思。你想动态创建子类吗? – 2015-03-19 00:14:36
@FelixKling感谢Felix的澄清,你会看到任何解决方法,这将使原始值的实现成为可能吗? – 2015-03-19 00:22:12
@FelixKling我想要的是能够console.log(节点)和输出为一个字符串为例,并且相同的行为在一个数组中。 – 2015-03-19 00:23:28