首先在js中的继承是Prototype-based 。不像一般的oo语言,比如java,c++是Class-based 的。
我们来比较一下这两种方式 :
1 在Class-based 中的类和实例是不同的实体,而在Prototype-based中所有对象都是实例。
2 在Class-based中定义一个类使用class关键字来定义。实例化一个对象,使用构造方法。而在Prototype-based,定义和创建一个对象都使用构造器函数。
3 在Class-based中构造一个继承,需要定义一个类,然后作为存在的类的子类。而在Prototype-based中,则是需要标记这个对象作为构造器函数的pr ...
在看The.Art.and.Science.of.JavaScript 的时候,看到了这个问题,就是在javascript中如何判断一个方法是new调用还是一般调用,在书中给出的代码是
function Element(){
if(this==window || 'Element' in this){
console.log("normal");
}else{
console.log("new");
}
}
可是这个代码不能解决两个问题:
1比如加上下面的代码:
Element.prototype.Elemen ...
上次pro js读书笔记里面,我说有段代码书里面有错,可是自己不知道怎么改,偶然的机会在g9 老大的blog上看到了解决方法。
http://blog.csdn.net/g9yuayon/archive/2007/04/18/1568980.aspx
错误代码:
function User( properties ) {
var temp=this;
for ( var i in properties ) { (function(){
temp[ "get" + i ] = function() {
...
1首先我们来看一下js中的public method:
// 创建一个User的构造函数
function User( name, age ){
this.name = name;
this.age = age;
}
// 加一个新的函数getName到User的prototype.
User.prototype.getName = function(){
return this.name;
};
//加另一个函? ...
|
|