這些代碼有什麼區別?在JavaScript中有什麼用法?
1- move : function(a,b){
.
.
.
}
2- function move(a,b){
.
.
.
}
我知道第二部分是一個函數,但我不知道關於第一部分的任何事情?你能回答我嗎?
這些代碼有什麼區別?在JavaScript中有什麼用法?
1- move : function(a,b){
.
.
.
}
2- function move(a,b){
.
.
.
}
我知道第二部分是一個函數,但我不知道關於第一部分的任何事情?你能回答我嗎?
請注意,JavaScript中的函數本身就是對象(因此也是變量)。
所以這些都完成同樣的事情:
var some_object = {};
some_object.do_something = function() {
// function code
};
var some_object = {
do_something: function() {
// function code
}
}
var some_object = {};
var some_function = function() {
// function code
};
some_object.do_something = some_function;
var some_object = {};
function some_function() {
// function code
};
some_object.do_something = some_function;
這些與您無關的區別僅在於3和4在外部範圍內有一個稱爲some_function
的功能。否則它們是相同的。
你的第一個例子是JavaScript本身無效。您可能將它看作某個庫中非常大的對象初始化的一部分;即:
var Library = {
// ...lots of lines
move: function(a, b) { /*...*/ },
// ...lots more lines
};
在它是你在任何財產初始化看到相同:
這種情況下。與此相同:
var object = {
foo: 1,
bar: 2
};
第一個是一物體的一部分(或應是),並定義了一個函數作爲該對象的屬性,而第二限定在當前範圍的功能move()
。
(1)move
通常是一個屬性,並且您正在爲該屬性分配一個函數。它是其他代碼的一部分,不是孤立的。例如:
var myObj = {
sayHello: function() {
console.log('Hello');
},
sayBye: function() {
console.log('Bye');
}
}
然後,您可以使用它像這樣:
obj.sayHello();
obj.sayBye();
(2)如你所說,這是一個簡單的命名函數move
你可以因此也 '結合' 兩:
function myHello(){
console.log('Hello');
}
var myObj = {
sayHello: myHello,
sayBye: function() {
console.log('Bye');
}
}
冒號通常用於定義對象中的屬性,例如
obj = {
myProp: "String",
myFunc: function() {
console.log('hello');
}
}
console.log(obj.myProp);
obj.myFunc();
它們還用於三元運算符,例如,
x = (y >= 2) ? "greater" : "not greater";
相同
if (y >= 2)
{
x = "greater";
}
else
{
x = "not greater";
}
其中?
時說: 「如果爲true」,而:
是一樣的 「其他」。
我猜在第一個例子中有更多的代碼,比如周圍的對象文字。 – adeneo
http://stackoverflow.com/q/336859可能會感興趣。 –