当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript prototype原型操作笔记

Javascript
动态生成select选项全接触
不刷新页面动态更新select选项,实现两个select相互操作
网页输入框日期型有效性判定一网打尽
实用Javascript函数之一(自动将输入文本框中的内容转换成大写字符)
实用Javascript函数之二(自动将输入文本框中的内容转换成小写字符)
实用Javascript函数之三(限制文本输入框中只能输入数字\"0\"到\"9\")
实用Javascript函数之四(用于对sString字符串进行前空格截除)
实用Javascript函数之五(用于对sString字符串进行后空格截除)
实用Javascript函数之六(截除字符串前后空格)
如何使用交替的滚动标题
采用DOM模型时创建一个Select节点后,要删除option项的解决方法
javascript函数速查
利用JavaScript和正则表达式进行丰富的日期判断(给其它项目组的代码,有比较好的编程风格和注释)
关于字符串的几个有用函数
FileSystemObject 的例子(处理驱动器、文件夹、文件)
用JScript实现VB.Net,C#的[委托Delegate]:
得到固定字符位置的函数
IE NC通用的藏鼠标右键一法
Menu
foolpot2001菜单

Javascript 中的 javascript prototype原型操作笔记


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 316 ::
收藏到网摘: n/a

在 JavaScript 中,prototype 不但能让对象共享自己财富,而且 prototype 还有寻根问祖的天性,从而使得先辈们的遗产可以代代相传。
复制代码 代码如下:

//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 都是从这个老祖宗传承下
来的,但他们各自又定义了自身的属性和方法,从而他们的子孙就表现出各自宗族的那些特征。