我试图创建像
这样的javascript对象function Caller() {
this.init = function() {
makeCall();
};
this.makeCall = function(){/*come code here*/}
}
var a = new Caller();
a.init();
我没有定义错误函数,当我尝试调用this.makeCall()时会发生同样的事情; 当我从makeCall定义中删除它时,它可以工作,但是当我从init中删除它时它不起作用。怎么解决这个问题?
答案 0 :(得分:4)
使用this.makeCall()
。另外在使用之前定义makeCall()
。
function Caller() {
this.makeCall = function () { /*come code here*/ }
this.init = function () {
this.makeCall();
};
}
var a = new Caller();
a.init();
答案 1 :(得分:2)
使用this.makeCall()
这是一种方法,您可以使用它。
答案 2 :(得分:2)
试试这个this.makeCall()
功能在这里成功执行。
<html>
<head>
</head>
<body>
<script>
function Caller() {
this.init = function() {
this.makeCall();
};
this.makeCall = function(){
alert('hello');
}
}
var a = new Caller();
a.init();
</script>
</body>
</html>
答案 3 :(得分:1)
您需要使用this
makeCall(); => this.makeCall();
答案 4 :(得分:1)
您可以使用IIFE声明Caller
:
var Caller=(function () {
function constructor() {
}
function makeCall() {
/*come code here*/
}
constructor.prototype.init=function () {
makeCall.apply(this, arguments);
};
return constructor;
})();
var a=new Caller();
a.init();
并确保Caller
在调用之前已加载。
答案 5 :(得分:0)
要回答您的问题并增强您的代码,您应该看一下:
function Caller(){};
这是你的构造函数 然后,您可以像这样向构造函数添加方法:
Caller.prototype.init = function () {
// do something
}
创建“类”Caller
var a = new Caller();
每个实例都将具有您在Caller.prototype
对象中描述的方法。
并解决您的问题:
如果一个原型方法想要调用另一个原型方法,则需要执行此操作:
// do some setup in your constructor
function Caller(phoneNumber) {
this.phoneNumber = phoneNumber;
};
Caller.prototype.init = function () {
// the code word "this" will be the instance itself
this.makeCall();
};
Caller.prototype.makeCall = function () {
// do whatever this method needs to do
alert('calling ' + this.phoneNumber);
};
var a = new Caller(0123456789);
a.init();
要理解的主要是,在每个原型方法中,关键字this
引用构造函数的当前实例(在本例中为Caller
)。