当我们制作这样的对象时
function myObject(){
Properties and methods here----
};
在对象的名称有必要之前写“function”关键字吗?所有对象都是真实的功能?我们不能写这样的直接对象名吗?
myObject(){
Properties and methods here----
};
答案 0 :(得分:4)
在第一种情况下,该函数可以用作对象的构造函数。所以你可以:
function Person(name) {
this.name = name
}
Person.prototype = {
// methods can go in here
}
person1 = new Person("bob");
alert(person1.name) // alerts "bob"
您也可以将函数用作对象。例如:
function myObject() {
return myObject.test;
}
myObject.test = "bob";
alert(myObject()) // would alert "bob"
但所有对象都不是函数。
var someObject = {
name: "bob",
moody: "sad"
}
alert(someObject.name); // alerts "bob"
try {
someObject();
} catch (er) {
alert(er); // alerts "TypeError: object is not a function"
}
我建议你看一下https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
答案 1 :(得分:4)
不,并非所有对象都是功能。 (但所有功能都是对象。)
此处,obj
不是函数:
var obj = {
foo: "bar"
};
此处dt
:
var dt = new Date();
function
关键字是必要的,以便说“以下是函数声明或函数表达式”。它只是JavaScript基本语法的一部分。
答案 2 :(得分:3)
一个原因显然是歧义;
function foo()
{
alert("cake")
}
foo()
{
alert("burb");
}
foo();
提醒cake
,burb
,cake
,因为第二个foo() {...}
只是一个常规函数调用,后跟{}
中包含的常规复合语句。< / p>
答案 3 :(得分:2)
function
声明一个函数。由于JavaScript的工作方式,函数可以用作类来制作对象。
但是如果你真的只想要一个对象,请使用波浪形的大括号,如下所示:
var myObject = {
x : 30, // a property
getX : function() { // a method
return this.x;
}
}
但是你对JavaScript的理解需要做很多工作:阅读一些关于它的书。
答案 4 :(得分:1)
在Javascript中,我们可以通过各种方式创建对象:
1)文字
let employee = {"name": "tyrion","age":34}
2)构造函数(具有此功能的函数)
function employee(name, age) {
this.name = name;
this.age = age;
}
让specificEmployee =新员工(“tyrion”,34);
构造函数总是需要一个新的运算符来创建一个对象
3)使用Object构造函数
let employee = Object.create(null);
employee.name = "tyrion";
employee.age = 34
在javascript中,除了原始类型之外的所有东西都是从Object构造函数继承的实例。
答案 5 :(得分:0)
不,不是必需的。你也可以:
var myObject = {
Prop1: "Value1",
Prop2: "Value2",
Method1: function() {
alert("hello");
}
};
实时测试案例:http://jsfiddle.net/rKunx/
答案 6 :(得分:0)
你可以写:
myObject = {
Properties and methods here----
}