为啥构造函数实例化必须用new关键字呢 new是构建一个空的对象后将this指向这个空对象 不new的话this会指向window 具体看上下文 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是当时JavaScript的创始人参考C的语法而这么设计的。 因为new是一个操作符,跟-,+是一样的,是js基础语法的一部分,不同只是他是由字母组成的。new是有前提的,只有js的函数对象才可以new,这就不展开了,很多细节。然后new之后会返回一个实例化的对象,这个new的过程是js面向对象实现的具象化操作,如果不用new,那就不能实现面向对象化编程,不能代码尽可能的复用。如果按着你的说法,或1楼的代码化实现是这样的,sayName是没办法调用的。var Dog = function(name, age){ this.name = name; this.age = age;}Dog.prototype = { constructor : Dog, sayName : function(){ console.log(this.name); }}Dog('jikey', 4);console.log(this.name == window.name); // trueconsole.log(this.name); // jikeyconsole.log(this.age); // 4然后用了new之后的情况,根据这个模板可以复制很多个dog2,dog3出来。var Dog = function(name, age){ this.name = name; this.age = age;}Dog.prototype = { constructor : Dog, sayName : function(){ console.log(this.name); }}var dog2 = new Dog('tang', 5);dog2.sayName();var dog3 = new Dog('csdn', 10);dog3.sayName(); 这个效果怎样做出来的? 日期计算器出问题了 firefox 文本框焦点问题 怎么在网页里随机图片 站被百度收录,记录下。 关于js的push问题 请教大家如何做动态滚动的TAB页 怎样点击一个图标,使其在一个文本框里出现这个图标,请大虾帮忙,解决了马上结 哪里有类似于系统时间设置工具的代码? 我有一个TABLE 我想选中一列,让它改变颜色.然后选中另外一列.取消前一列选中的颜色...怎么做呢~!? 啊啊啊啊啊!这是为什么! jquery hover show 延迟列队问题
new是有前提的,只有js的函数对象才可以new,这就不展开了,很多细节。
然后new之后会返回一个实例化的对象,这个new的过程是js面向对象实现的具象化操作,如果不用new,那就不能实现面向对象化编程,不能代码尽可能的复用。
如果按着你的说法,或1楼的代码化实现是这样的,sayName是没办法调用的。var Dog = function(name, age){
this.name = name;
this.age = age;
}
Dog.prototype = {
constructor : Dog,
sayName : function(){
console.log(this.name);
}
}Dog('jikey', 4);
console.log(this.name == window.name); // true
console.log(this.name); // jikey
console.log(this.age); // 4
然后用了new之后的情况,根据这个模板可以复制很多个dog2,dog3出来。var Dog = function(name, age){
this.name = name;
this.age = age;
}
Dog.prototype = {
constructor : Dog,
sayName : function(){
console.log(this.name);
}
}
var dog2 = new Dog('tang', 5);
dog2.sayName();var dog3 = new Dog('csdn', 10);
dog3.sayName();