Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
292 views
in Technique[技术] by (71.8m points)

初学,关于javascript的问题?

菜鸟一枚,刚学javascript,有个实例化对象的问题想问一下各位:

function b() {
    alert(1);
}
 var a = new b();
 alert(a());
function b() {
    alert(1);
}
 var a = new b();
 alert(a);

我想要实例化函数b然后输出1,但是上面两种都不行,请问为啥。。第一种在浏览器上报错,第二种是Object object/(ㄒoㄒ)/~~


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

你是没搞清楚new是什么意思,继承相关的内容:

new实际上在构造函数运行时继承了父级的原型对象的同时改变了this指向:

var obj={};
obj._proto_=Father.propotype; //原型继承
Father.call(obj); //改变this指向
return obj;

就是说 a= new b();new b()执行完的会返回一个对象给a,应为b里面什么属性方法也没写,
所以在弹出1之后,a只得到的一个空对象{};所有alert(a);就是[object object];
alert(a());//这个肯定报错啊,a是个对象,不是函数。

继承这块不太好懂,慢慢来吧


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share

2.1m questions

2.1m answers

63 comments

56.6k users

...