Javascript寄生构造函数似乎没有向对象添加函数,为什么?
Javascript parasitic constructor seems failed to add a function to object, why
我从网上得到这个例子,使用寄生构造函数来构建一个对象,包括给它一个额外的函数:
function SpecialArray(){
var values=new Array();
values.push.apply(values, arguments);
values.toPipedString=function(){
return this.join("|");
}
}
var colors=new SpecialArray("red", "blue", "green");
console.log(colors.toPipedString());
代码运行有一个异常:
console.log(colors.toPipedString());
^
TypeError: colors.toPipedString is not a function
但是我想我已经把函数附加到对象上了。为什么说没有功能?
谢谢。
您将toPipedString函数附加到内部var。试试这个:
function SpecialArray() {
var values=new Array();
values.push.apply(values, arguments);
this.toPipedString = function() {
return values.join("|");
}
}
var colors = new SpecialArray("red", "blue", "green");
console.log(colors.toPipedString());
如果要调用toPipedArray
作为specialArray的函数,它需要位于special array的原型上。
function SpecialArray(){
this.values=new Array();
this.values.push.apply(this.values, arguments);
}
SpecialArray.prototype.toPipedString = function(){
return this.values.join("|");
}
var colors=new SpecialArray("red", "blue", "green");
console.log(colors.toPipedString());
Nosyara的方法也有效。在函数/对象中使用this.Myfunction
将myFunction
也置于原型中。
相关文章:
- FabricJs-限制主对象内添加对象的移动区域
- 向Angular作用域对象添加对象数组——TypeError
- Javascript使用+添加对象
- 动态添加对象的jQuery事件处理程序
- 添加JQuery UI在Meteor中添加对象后可调整大小
- 在我的上下文中添加对象的动态方法
- 如何检测是否已使用 angular.forEach AngularJS 添加对象
- 在对象coffeescript中添加对象数组
- 使用Jquery在单击“”时显示表单;添加对象”;按钮
- 我可以向数组添加对象键吗
- 向扩展数组的JS集合添加对象(继承?)
- 尝试通过从自动完成推送添加对象时缺少 $$Hashkey
- 添加对象值 Javascript
- 在上传问题时添加对象
- 如何使用 javascript 的变量名称在数组中添加对象属性
- 在 JavaScript/TypeScript 中动态地“直接”添加对象属性到“this”
- 如何仅当对象不存在时才使用javascript添加对象
- 如何在数组末尾添加对象的副本
- rails在javascript url中添加对象
- ThreeJS-按不同顺序添加对象会影响alpha/显示