js中prototype的理解摘录
来源:互联网 发布:淘宝店心得 编辑:程序博客网 时间:2024/04/25 05:19
javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。
A.prototype = new B();
理解prototype不应把它和继承混淆。A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。A能使用B的方法和属性。这里强调的是克隆而不是继承。
原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展。我们称B的原型为A。
每一个构造函数都有一个属性叫做原型(prototype)。这个属性非常有用:为一个特定类声明通用的变量或者函数。
prototype属性可算是JavaScript与其他面向对象语言的一大不同之处。 prototype就是“一个给类的对象添加方法的方法”,使用prototype属性,可以给类动态地添加方法,以便在JavaScript中实现“ 继承”的效果。
javascript的方法可以分为三类:
a 类方法 b 对象方法 c 原型方法
function People(name){ this.name=name; //对象方法 this.Introduce=function(){ alert("My name is "+this.name); }}//类方法People.Run=function(){ alert("I can run");}//原型方法People.prototype.IntroduceChinese=function(){ alert("我的名字是"+this.name);}//测试var p1=new People("Windking");p1.Introduce();People.Run();p1.IntroduceChinese();
你不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它的存在。
function Test(){}alert(Test.prototype); // 输出 "Object"
给prototype添加属性
就如你在上面所看到的,prototype是一个对象,因此,你能够给它添加属性。你添加给prototype的属性将会成为使用这个构造函数创建的对象的通用属性。
function Fish(name, color){this.name=name;this.color=color;}Fish.prototype.livesIn="water";Fish.prototype.price=20;var fish1=new Fish("mackarel", "gray");var fish2=new Fish("goldfish", "orange");var fish3=new Fish("salmon", "white")
你看到所有的鱼都有属性livesIn和price,我们甚至都没有为每一条不同的鱼特别声明这些属性。这时因为当一个对象被创建时,这个构造函数将会把它的属性prototype赋给新对象的内部属性__proto__。这个__proto__被这个对象用来查找它的属性。
用prototype给对象添加函数
function Employee(name, salary){this.name=name; this.salary=salary;}Employee.prototype.getSalary=function getSalaryFunction(){return this.salary;}Employee.prototype.addSalary=function addSalaryFunction(addition){this.salary=this.salary+addition;}
var boss1=new Employee("Joan", 200000);var boss2=new Employee("Kim", 100000);var boss3=new Employee("Sam", 150000);并验证它:CODE:alert(boss1.getSalary()); // 输出 200000alert(boss2.getSalary()); // 输出 100000alert(boss3.getSalary()); // 输出 150000
JS中允许的类型有Array, Boolean, Date, Enumerator, Error, Function, Number, Object, RegExp, String
可以在类型上使用proptotype来为类型添加行为。这些行为只能在类型的实例上体现。 prototype只能用在类型上
Object.prototype.pro = 1; Object.prototype.Method = function () { alert(1); } var obj = new Object(); alert(obj.pro); obj.Method();
- js中prototype的理解摘录
- js中prototype的理解
- 对js中new、prototype的理解
- 关于js中prototype的理解
- JS中prototype属性的理解
- 关于JS中prototype的理解
- js prototype的理解
- js的原型prototype理解
- prototype.js部分源码摘录
- 关于js中this 和 prototype的 理解。
- 对JS中Object.prototype.toString.call([value])的理解
- JavaScript中prototype的理解
- javascript中prototype的理解
- javascript中prototype的理解
- JavaScript中prototype的理解
- 深入理解js的prototype以及prototype的一些应用
- JS的prototype和_proto_的理解
- JS中prototype的用法
- iOS CoreImage学习之高斯模糊效果
- C# 等待窗体 利用timer设置窗体是否关闭
- 音视频文件的播放
- git使用beyond compare
- loadrunner关联技术的一个示例
- js中prototype的理解摘录
- 非常霸气的妈妈,写给自己的孩子的五十句话。
- 轻松解决mac改名之后,文件被清空的问题
- 统治世界的十大算法
- java程序模拟QQ空间登录 - 并模拟刷说说的赞
- Jackson 基础使用
- quick-3.5 ActionTimeline的setLastFrameCallFunc调用会崩溃问题
- 逊哥dp专题 总结(普通dp,斜率优化dp,数位dp)
- Unity 读取、写入自定义路径文件,调用System.Windows.Forms