Javascript基础——详解prototype
来源:互联网 发布:愉此一生网络剧播放 编辑:程序博客网 时间:2024/06/16 01:18
1.6. 关于prototype
prototype即原型。JavaScript中所有的函数都有一个prototype属性。这个prototype属性本身又是一个object类型的对象。因此我们可以对这个prototype对象添加任意属性和方法。prototype的特点是:在prototype上定义的属性和方法,可以通过其构造出来的实例对象直接访问和调用。也就是说,prototype提供了一组同类对象共享属性和方法的机制。下面给出两个例子进行对比说明prototype的作用。
例子1:
function Person(name){
this.name = name;
}
Person.say = function(){
alert('hello,'+this.name);
}
Person.say();//输出“hello,undefined”
var zhangsan = new Person('zhangsan');
var lisi = new Person('lisi');
zhangsan.say();//此处会抛出“对象不支持此属性和方法”的错误
lisi.say();//此处会抛出“对象不支持此属性和方法”的错误
通过例子1可以看出,虽然我们为Person函数定义了名称为say方法,但是只有Person函数自己可以调用该方法,通过Person函数构造出来的zhangsan和lisi两个对象都不能调用该方法,也就是说Person构造出来的对象是不能共享Person函数的属性和方法的。
例子2:
function Person(name){
this.name = name;
}
Person.prototype.say = function(){
alert('hello,'+this.name);
}
Person.say();//此处会抛出“对象不支持此属性和方法”的错误
Person. prototype .say();//输出“hello,undefined”
var zhangsan = new Person('zhangsan');
var lisi = new Person('lisi');
zhangsan.say();//输出“hello,zhangsan”
lisi.say();//输出“hello,lisi”
通过例子2可以看出,我们在Person函数的prototype属性上定义的say方法,通过Person函数构造出来的zhangsan和lisi两个对象都可以调用该方法,也就是说Person构造出来的对象是可以共享Person函数在prototype属性上定义的属性和方法的。但是,Person函数自身却不能直接调用该方法,因此在调用Person.say()时会报错,只能通过Person. prototype .say()进行调用。
- Javascript基础——详解prototype
- JavaScript Prototype 详解
- Javascript prototype详解
- JavaScript Prototype 详解
- javascript之prototype详解
- 详解javascript中的prototype
- javascript prototype 详解
- JavaScript prototype 属性详解
- JavaScript prototype详解
- javascript 之prototype详解
- JavaScript Prototype 详解
- Javascript基础——详解Javascript对象
- [javascript基础]constructor与prototype
- JavaScript中prototype属性详解
- javascript 函数属性prototype详解
- Javascript中prototype属性详解
- 详解Javascript中prototype属性
- Javascript prototype详解(一)
- Javascript基础——关于JavaScript代码的执行顺序
- 混沌的思绪
- 如何在Linux下编译Windows版本的adb和fastboot
- .Net程序脱离.net framework框架的另一个方法
- access denied for user 'root'@'localhost'(using password: YES)问题解决办法.
- Javascript基础——详解prototype
- Javascript基础——不常用但很有用的js函数
- poj1230
- JQuery 选择器
- http://alumni.cs.ucr.edu/~piyush/CandCPP.htm
- 独家:为什么苹果的优秀设计很难复制?
- 函数调用约定详解:_stdcall,_cdecl,_fastcall
- STL算法学习
- C++精华(STL)学习笔记之算法