源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

javascript prototype原型操作笔记

  • 时间:2021-07-03 18:01 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript prototype原型操作笔记
[u]复制代码[/u] 代码如下:
//var People={name:"xiong",age:15}; //var Person=function(user,age){ //    this.name=user; //    this.age=age; //    this.say=function(){alert("I am "+this.name+"\n"+this.age);} //} //var Chairman=function(name,salary){ //    Person.call(this,name); //    } //var Bill=new Person("Bill",15); //var Hu=new Chairman("Hu Jintao"); //Person.prototype.eat=function(){ //    alert("I'm eating"); //    } //Bill.eat(); function Person(name) //基类构造函数 { this.name = name; }; Person.prototype.SayHello = function() //给基类构造函数的 prototype 添加方法 { alert("Hello, I'm " + this.name); }; function Employee(name, salary) //子类构造函数 { Person.call(this, name); //调用基类构造函数 this.salary = salary; };     function Xiong(name,age){         Employee.call(this,name);         } Employee.prototype = new Person(); //建一个基类的对象作为子类原型的原型,这里很有意思     Xiong.prototype=new Employee(); Employee.prototype.ShowMeTheMoney = function() //给子类添构造函数的 prototype 添加方法 { alert(this.name + " $" + this.salary); }; var BillGates = new Person("Bill Gates"); //创建基类 Person 的 BillGates 对象 var SteveJobs = new Employee("Steve Jobs", 1234); //创建子类 Employee 的 SteveJobs对象      var hiakuotiankong=new Xiong("海阔天空");      var benbenxiong=new Xiong("笨笨熊"); // BillGates.SayHello(); //通过对象直接调用到 prototype 的方法 // hiakuotiankong.SayHello(); //通过子类对象直接调用基类 prototype 的方法,关注!      benbenxiong.SayHello=function(){ //掩盖了原型的 SayHello 方法          alert("haha,I'm"+this.name); }          benbenxiong.SayHello(); // SteveJobs.ShowMeTheMoney(); //通过子类对象直接调用子类 prototype 的方法 // alert(BillGates.SayHello == SteveJobs.SayHello); //显示:true,表明 prototype 的方法是共享的     Xiong.prototype.Goodbye=function(){          alert(this.name+"Bye-bye");         }     benbenxiong.Goodbye();    
在 JavaScript 中,prototype 不但能让对象共享自己财富,而且 prototype 还有寻根问祖的 天性,从而使得先辈们的遗产可以代代相传。当从一个对象那里读取属性或调用方法时,如果该对象自 身不存在这样的属性或方法,就会去自己关联的 prototype 对象那里寻找;如果 prototype 没有,又会 去 prototype 自己关联的前辈 prototype 那里寻找,直到找到或追溯过程结束为止。 在 JavaScript 内部,对象的属性和方法追溯机制是通过所谓的 prototype 链来实现的。当用 new 操作符构造对象时,也会同时将构造函数的 prototype 对象指派给新创建的对象,成为该对象内置的原 型对象。对象内置的原型对象应该是对外不可见的,尽管有些浏览器(如 Firefox)可以让我们访问这个 内置原型对象,但并不建议这样做。内置的原型对象本身也是对象,也有自己关联的原型对象,这样就 形成了所谓的原型链。 在原型链的最末端,就是 Object 构造函数 prototype 属性指向的那一个原型对象。这个原型对象 是所有对象的最老祖先,这个老祖宗实现了诸如 toString 等所有对象天生就该具有的方法。其他内置 构造函数,如 Function, Boolean, String, Date 和 RegExp 等的 prototype 都是从这个老祖宗传承下 来的,但他们各自又定义了自身的属性和方法,从而他们的子孙就表现出各自宗族的那些特征。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部