以下哪些是有效的对象构造函数?
1) var m = function(){}
2) m = function(){}
3) m.prototype.constructor = function(){}
答案 0 :(得分:1)
您忘记了var m = {};
这称为对象文字。
答案 1 :(得分:1)
它们似乎都是声明空函数的有效语句,并将其分配给不同的变量。
Javascript中的每个函数都是一个对象本身(或f.prototype不起作用)和一个潜在的对象构造函数。可以使用new Thingy
语法(或者在您的示例中为new m
)调用任何函数。或者它可以正常调用 - new
唯一的特殊功能就是将this
设置为从f.prototype派生的对象。
新创建的函数有一个prototype
属性,其中包含一个新创建的对象({}
),除了指向该函数的隐藏constructor
属性外,它没有任何属性(它是一个循环参考,实际上)
应该是这样的:
var m = function(){};
m.prototype.constructor == m;
答案 2 :(得分:0)
1)var m = function(){}
2)m = function(){}
几乎相同,除了第一个创建本地范围的函数,第二个 - 全局。并且为了创建一个对象,你可以
var obj = new m();