JavaScript面向对象

来源:互联网 发布:ef英孚教育网络课程 编辑:程序博客网 时间:2024/06/05 04:21

JavaScript面向对象

文章分类:Web前端
①JavaScript一切都派生于现有对象的一个副本,即对象赋值跟另一个对象,只是复制对象的副本,并不是指针引用,两者之间的属性值改变,并不相互影响 

②对象=关联数组=属性包=存储体,即键/值形式,<属性名/属性值>或<函数名/函数动作>等 

③原型中读取的时候从原型链上读取,写入的时候往自己里面写,即读取的时候先从自身查找,没有则从上层父类查找,直至顶层Object对象,而写入则只是写在自身之中 

实例解析: 

<script> 
/*对象赋值,只是复制对象的副本,两者之间的属性值的改变并不相互影响*/ 
var person={}; 
person.name="person"; 

var student={}; 
student.name=person.name; 

person.name="hzp"; 

alert(person.name); //打印hzp 
alert(student.name);//打印person 


/*********类的继承********/ 

function Person(){ 
this.name="person"; 
this.getName=function(){ 
  alert(this.name); 



function Student(){ 


Student.prototype=new Person(); //继承Person 

function init(){ 
var s1=new Student(); 
s1.getName();//打印person 
alert(s1.age);//原型中读的时候从原型链上读,先从Student自身找age,没有就从上层父类Person找,直至顶层父类Object,最终没有找到,打印undefined 
Person.prototype.age=22; 
var s2=new Student(); 
s2.name="hzp"; 
s2.getName(); 
alert(s2.age); //原型中读的时候从原型链上读,先从Student自身找age,没有就从上层父类Person找,结果找到了age 


init(); 

/***原型中读的时候从原型链上读,写的时候往自己里面写****/ 

function object2(){ 

function object3(){ 

var obj3=new object2(); 
Object.prototype.foo=function(){ 
alert("object"); 

obj3.foo(); //读的是Object里的foo 

object2.prototype.foo=function(){ 
alert("object2"); 

obj3.foo();//读的是object2里的foo 
</script>