日期:2014-05-16 浏览次数:20405 次
?
function logs(obj){document.write(obj+"<br/>");} //打印log日志
//继承 //继承可以通过原型链来实现 //解释器会在对象中查找该属性,如果 //没有找到,则在其内部对象 prototype 对象上搜索,由于 prototype 对象与对象本身的结 //构是一样的,因此这个过程会一直回溯到发现该属性,则调用该属性,否则,报告一个错误。 function Base(){ var name = "josn"; this.baseFunc = function(){ logs("base behavior"); } this.getName = function(){ return name; } } function Middle(){ this.middleFunc = function(){ logs("middle behavior"); } } Middle.prototype = new Base();//原型上进行继承 var mid = new Middle(); mid.middleFunc(); //自有函数 mid.baseFunc(); //继承自父类 Base
//引用 // 引用始终指向最终的对象,而并非引用本身 var obj = {};//空对象 var ref = obj;//引用 obj.name = "objectA"; logs(ref.name);;//objectA ref跟着添加了name属性 obj.name = "objectB"; //修改原始的那个对象会影响到其引用上,这一点也应该注意。 obj = ["one","two","three","d"]; obj.name = "objectC"; logs(ref.name);/*objectA ref还指向原来的对象*/logs(obj.length);//4 数组的长度 //obj 只是对一个匿名对象的引用,所以,ref 并非指向它,当 obj 指向另一个数组对象时 //可以看到,引用 ref 并未改变