JavaScript让人很头疼

想当年搞C++的面向对象时,很多问题只要花一些时间就可以搞定,想的很清楚明白。可是最近搞JavaScript好多问题搞不清楚,会用却搞不清楚很让人不爽。

function Shape(){
  this.area = function(){};
}

function Point(){
  this.x = 0;
  this.y = 0;
}

var p = new Point;

console.log(p.prototype);    //为啥是undefine
console.log(p.constructor);  //为啥又是指向Point的function

console.log("-----------------------------");

p.prototype = new Shape();
console.log(p.area);          //为啥又是undefine,不是设置了原型对象嘛,我操

Point.prototype = new Shape();
console.log(p.area);          //TMD还是不行,我设置了类型的原型对象啊

Point.prototype.area = function(){};
console.log(p.area);          //你妈,为什么啊

var p2 = new Point;
console.log(p2.area);         //我操,这时又可以了@#¥%……&*(

Output:

undefined
function Point() { this.x = 0; this.y = 0; }
-----------------------------
undefined
undefined
undefined
function () { }

我什么时候能搞清楚啊!我看了一堆文章,我TMD的还是有5年以上编程经验的Programmer,我居然还精通于面向对象编程。遇到JavaScript我栽了。你还别给哥一段代码说:这样写就对了,哥知道怎么样写可以,但哥搞不清楚他内部的关系啊,有没有!!!谁能画张图将上面的引用关系,闲置对象,类型对象都画出来,让我醍醐灌顶一次吧。

@ 2012-02-22 08:00

Comments:

Sharing your thoughts: