我有以下对象:
var x = {
y: '33',
z: '88',
m: function() {
alert('this is the m element');
}
};
x.newObject = function() {
alert('mm');
function click(myval) {
alert('you have select the click function' + myval);
}
};
x.newObject.click('clickme'); // This is what I have tried; it's not working.
如何调用newObject
的点击功能?
答案 0 :(得分:5)
在编码方式中,您无法访问click
函数,因为它在另一个函数中。
如果你坚持用这种方式编码,请调用newObject
(这是一个函数)在对象中返回click
,以便可以访问它。它通常被称为函数调用“chaining”,其中前一个调用返回一个对象,然后下一个调用可以使用:
x.newObject = function(){
alert('monmon') ;
return {
click : function (myval){
alert('you have select the click function' + myval) ;
}
}
}
//a call to newObject returns an object with a click function
x.newObject().click('clickme')
答案 1 :(得分:1)
这有效:
var x = {
y: '33',
z: '88',
m: function() {
alert('this is the m element');
}
}
x.newObject = new function() {
return {
click: function(myval) {
alert('you have select the click function' + myval);
}
}
}
x.newObject.click('clickme');
答案 2 :(得分:1)
click
在newObject范围内,因此在newObject之外的任何地方都不可用。您是否尝试使用方法创建对象?如果是这样,请将其添加到原型中:
newObject = function() { ... };
newObject.prototype = {
click: function(myval){ .. }
};
//now you can call newObject.click()
或者你可以让newObject返回你想要公开的方法:
newObject = function(){
return {
click: function(myval){ ...}
}
};
答案 3 :(得分:0)
简短回答:没办法。答案很长:“click”在某种程度上被视为更大函数中的局部变量,您无法访问声明它们的函数之外的局部变量。您需要将“点击”功能分配给某些全局访问的属性或变量。
答案 4 :(得分:0)
也许newObject
不应该是一个函数,而是一个对象。以下代码适用于我
var x = {
y: '33',
z: '88',
m: function() {
alert('this is the m element');
}
}
x.newObject = {
click: function(myval) {
alert('you have select the click function' + myval);
}
}
x.newObject.click();