考虑以下JavaScript对象定义:
var person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : function() {
return this.firstName + " " + this.lastName;
}
};
我知道如果我们想使用object属性(即函数),我们必须编写以下代码:
person.fullName();
据我所知,JavaScript对象是名为属性或方法的命名值的容器。
另外,我知道我可以将 firstName,lastName,id 等对象属性定义为单个变量。 现在,我的问题是我还可以将函数“fullName”定义为变量吗?如果有可能那么如何?如果没有那么为什么?
谢谢。
答案 0 :(得分:0)
有可能。请注意,您的代码与此代码等效:
var person = {};
person.firstName = "John";
person.lastName = "Doe";
person.id = 5566;
person.fullName = function() {
return this.firstName + " " + this.lastName;
}
要看的重要一点是function() { return this.firstName + " " + this.lastName; }
(或者更确切地说,评估该代码串的结果)是值,就像5566
一样,并且可以包含在属性,变量或数组中......就像5566
一样。唯一的区别是,一个是数字,另一个是函数。
除了存储在属性中的函数的原始示例("方法")之外,这里是存储在变量中的函数值的示例:
var sayHello = function(name) { console.log("Hello, " + name); }
这是一个数组:
var adders = [
function(x) { return a; },
function(x) { return (a + 1) % 3; }
function(x) { return (a + 2) % 3; }
];
这里它作为参数传递:
function twice(f, x) {
return f(f(x));
}
twice(function(x) { return x * 2; }, 7);
// 28
答案 1 :(得分:0)
是强>
以下是您的问题的示例的简单答案
jQuery(document).ready(function() {
window.$ = jQuery;
initializeGlobelCalls.init();
});
var initializeGlobelCalls = function () {
var validatefunction = function() {
$(document).on('click','#divid',function(){//event trigger when you want to call function
//your function code
});
};
return {
init: function () {
validatefuction();//can add multiple functions here
}
};
}();
使用这种结构你可以编写多个函数,首先需要定义像validatefunction
这样的函数然后添加到init
答案 2 :(得分:0)
在JavaScript中,变量也可以指向函数。
示例:
var fullName = function(param) {
return param;
}
console. log(fullName('some text'));
答案 3 :(得分:0)
除非您在创建对象时生成fullName
,否则无法执行此操作:
var person = {
firstName: "John",
lastName : "Doe",
id : 5566,
fullName : ''
};
person.fullName = person.firstName + person.lastName;
否则,无法创建静态变量,只能在调用时由函数创建(例如在原始示例中)。 这是不可能的,因为按照JavaScript的设计方式,您不能静态分配动态属性(除了下面引用的ES6 getter,它仍会在每次调用中生成值)它们只会自动生成一次,而不需要您的部分或库中的某种算法来为您执行此操作。
正如我上面所述,您可以尝试ES6 getters,但这只会使看起来像属性,每次它仍会被称为访问:
示例:
var person = {
firstName: "John",
lastName : "Doe",
id : 5566,
get fullName() { return this.firstName + ' ' + this.lastName; }
};
然后您可以像这样访问它:person.fullName