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"
}
8条答案
按热度按时间ssm49v7z1#
不,不是所有的对象都是函数(尽管所有的函数都是对象)。
这里,
obj
不是一个函数:也不要在这里使用
dt
:为了表示“后面是函数声明或函数表达式”,
function
关键字是必需的,它只是JavaScript基本语法的一部分。thigvfpy2#
在第一种情况下,函数可以用作对象的构造函数。2所以你可以有:
你也可以把函数当作对象来使用,例如:
但并非所有对象都是函数。
我建议您看一看https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function
gg58donl3#
一个原因显然是明确性;
警报
cake
、burb
、cake
,因为第二个foo() {...}
只是一个常规函数调用,后跟一个用{}
括起来的常规复合语句。a9wyjsp74#
function
声明了一个函数。由于JavaScript的工作方式,函数可以用作 class,以生成对象。但是如果你真的只需要一个对象,就用花括号,就像这样:
但是您对JavaScript的理解还需要做大量的工作:我读过几本关于它的书。
o7jaxewo5#
在Javascript中,我们可以通过各种方式创建对象:
1)文字
2)构造函数(具有此构造函数的函数)
让specificEmployee =新雇员(“tyrion”,34);
构造函数始终需要一个new运算符来创建对象
3)使用Object构造函数
在javascript中,除了原语类型之外的所有东西都是从Object构造函数继承的示例。
gpnt7bae6#
不,这不是必需的。您还可以:
实时测试用例:http://jsfiddle.net/rKunx/
aemubtdh7#
你可以写:
dffbzjpn8#
如果你想在Java中尽可能地避免使用
function
关键字,你可以使用类:使用类的明显缺点是任何属性或函数都必须使用
this
访问。this
关键字的优点是很清楚地知道您引用的是类属性或函数,而不是函数中的局部属性或函数。有些人在顶部使用
var
或let
:尽管如此,许多人还是喜欢使用函数来定义某种类,因为这样不需要
this
来获取函数作用域中的变量属性。将其放入模块中,您仍然可以像包含类一样包含这些属性。如果我能为Javascript的未来许个愿,那就是找到某种方式,让
this
以某种方式隐式引用类,从而拥有更小的代码风格、更少的标记和更容易的可读性。