前言
JavaScript的目的是分析对象,然后对对象的解释。所以,面对对象这方面也比较重要,这篇博客侧重介绍一些面向对象的例子。
内容
在JavaScript中的对象就是键值对,其方法是值为函数的属性。
面向对象
在JavaScript中也存在继承,相比较C系继承(C++、C#、Java…,这些都是基于类的继承,即继承模版)而言,在JavaScript中继承的是原型,所谓原型,就是在整个板块有很多使用方法与的变量name、age等字段,这些都是对象,构造函数设置原型为这个对象,创建出来的对象就继承与这个对象(从对象那里继承),但是都是占据了对象不同地方的内存,即每创建一个这样的对象,就会浪费一个这样的内存空间。
其优点是:原型更加符合人们的常规思维。
var o ={
say:function(){
if(this.name && this.age && this.sex)
alert("您好,我是" + this.name + ",我今年"+this.age + "岁了,我是" + this.sex +"生");
},
get_Name : function(){
if(this.name) return this.name;
}
set_Name : function(){
if(this.name) this.name = value;
}
var Person =function(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
};
Person.prototype = o;
var p1 = new Person("赵晓虎",19,"男");
p1.say()
}
原型链
上文中介绍了原型,既然有原型,那么原型之间也肯定存在联系,所以这些联系的总集称之为原型链。
如果需要原型,那么就一定要有函数;每一个对象有一个属性叫prototype(在IE中__proto__
)
这个属性就是这个对象的原型alert(o.__peoto__)
;
对象有原型,那么原型也有对象,原型也有原型
所有的函数是对象,继承自Function.prototype
Function.prototype
是对象,继承自Object.prototype
Object.prototype
是对象,继承自null
obj是对象,继承自Object.prototype
能看懂这个原型链的图片,那就恭喜您,因为你已经懂得了原型链,下面来个例子,加深对原型链的了解:
Js的访问规则
o.方法()
首先在o当前这个类型中寻找改成元的定义,如果存在该成员的定义,那么就直接使用该成员,如果该成员不在当前类型中,就访问其原型(原型链中的上一级),以此类推,直到null为止
<script style = "text/JavaScript">
var o {name:"我是祖宗"};
var f1 = function(){
this.name = "我是亚当";
};
f1.prototype = o;
var foo1 = new f1();
var f2 = function(){
this.name = "夏娃";
}
var foo2 = new f2()
foo2.__proto__ = foo1;
var f3 = function(){
this.name ="我是人类";
}
f3.prototype = foo2;
var foo3 = new f3();
alert(f3.name);
</script>
总结
介绍+图片+代码例子的介绍,三方面结合能对原型链有一个大致的了解了。
end
谢谢您的阅读!