JavaScript的原型
//回顾构造函数
function Box(name, age) {
this.name = name; //实例属性
this.age = age;
this.run = function() { //实例方法
return this.name + this.age;
}
}
//原型
function Box() {} //构造函数体内什么都没有,如果有就是实例属性或者实例方法
Box.prototype.name = 'Lee'; //原型属性
Box.prototype.age = 100; //原型属性
Box.prototype.run = function () { //原型方法
return this.name + this.age;
};
var box1 = new Box();
var box2 = new Box();
alert(box1.name); //Lee
alert(box1.age); //100
alert(box1.run()); //run是一个方法,run()是一个值
function Box() {} //构造函数体内什么都没有,如果有就是实例属性或者实例方法
Box.prototype.name = 'Lee'; //原型属性
Box.prototype.age = 100; //原型属性
Box.prototype.run = function () { //原型方法
return this.name + this.age;
};
var box1 = new Box();
var box2 = new Box();
//原型属性和实例属性的区别是共享,共享保持一致,
//如果是实例方法,不同的实例化,他们的方法地址是唯一的不一样的
//如果是原型方法,那么他们的地址是共享的,大家都一样
alert(box1.run == box2.run); //true,说明是地址共享的。
alert(box1.__proto__); //访问的是一个指针,指向prototype原型对象
alert(box1.constructor); //构造属性,可以获取构造函数本身
//作用是被原型指针定位,,然后得到构造函数本身
//其实就是对象实例对应的原型对象的作用
//IE浏览器不能访问,但是别的浏览器虽然能访问却不能获取内部信息
//返回的是[object,object];
删除实例中的属性
delete box1.name; //删除实例中的属性
alert(box1.name); //Lee,本来是jack,因为实例中的属性删除了所以为Lee;
覆盖原型中的属性
Box.prototype.name = 'LLL'; //覆盖原型中的属性;
alert(box1.name); //LLL覆盖原型中的属性;
hasOwnProperty()判断属性是在实例中
alert(box1.hasOwnProperty('name')); //false;说明属性不在实例中
box1.name = 'j';
alert(box1.hasOwnProperty('name'));//true;说明属性在实例中
判断只有在原型中的属性
//只有原型中的属性
function isProperty(object, protety) {
return !object.hasOwnProperty(protety) && (protety in object)
}
alert(isProperty(box1, 'name'));//true,此刻就原型中有属性name,所以是true,如果
//把原型中的name删除,那么就是false
box1.name = 'hello';
alert(isProperty(box1, 'name'));//false,因为isProperty这个函数是判断原型中是否有name
//属性,此刻实例中给了box1的一个name属性
有错误希望能帮我提出来,我会改正
JavaScript的原型的更多相关文章
- Javascript的原型链图
90%的前端或者js程序员或者老师们对Javascript懂得不比这个多 给手机看的 但是这个图里的所有褐色单向箭头链就是Javascript的原型链(颜色标注对理解js原型链很关键) 这图中的各个_ ...
- 深入理解JavaScript系列:史上最清晰的JavaScript的原型讲解
一说起JavaScript就要谈的几个问题,原型就是其中的一个.说了句大话,史上最清晰.本来是想按照大纲式的行文写一下,但写到后边感觉其实就一个概念,没有什么条理性,所以下面就简单按照概念解释的模式谈 ...
- 【面试必备】javascript的原型和继承
原型.闭包.作用域等知识可以说是js中面试必考的东西,通过你理解的深度也就能衡量出你基本功是否扎实.今天来复习一下javascript的原型和继承,虽说是老生常谈的话题,但对于这些知识,自己亲手写一遍 ...
- javascript进阶-原型prototype
一.javascript原型认识 很多编程语言都有类的概念,我们可以拿原型和类进行比较,看看它们之间的区别以及相同点在哪里. 1.类:类是一个具体事物的抽象所以类是一个抽象的东西,在面向对象中类可以用 ...
- 理解JavaScript 的原型属性
1.原型继承 面向对象编程可以通过很多途径实现.其他的语言,比如 Java,使用基于类的模型实现: 类及对象实例区别对待.但在 JavaScript 中没有类的概念,取而代之的是一切皆对象.JavaS ...
- JavaScript - 基于原型的面向对象
JavaScript - 基于原型的面向对象 1. 引言 JavaScript 是一种基于原型的面向对象语言,而不是基于类的!!! 基于类的面向对象语言,比如 Java,是构建在两个不同实体的概念之上 ...
- JavaScript的原型继承
JavaScript是一门面向对象的语言.在JavaScript中有一句很经典的话,万物皆对象.既然是面向对象的,那就有面向对象的三大特征:封装.继承.多态.这里讲的是JavaScript的继承,其他 ...
- javaScript系列 [04]-javaScript的原型链
[04]-javaScript的原型链 本文旨在花很少的篇幅讲清楚JavaScript语言中的原型链结构,很多朋友认为JavaScript中的原型链复杂难懂,其实不然,它们就像树上的一串猴子. 1.1 ...
- JavaScript prototype原型和原型链详解
用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...
- Javascript的原型继承,说清楚
一直以来对Javascript的原型.原型链.继承等东西都只是会用和了解,但没有深入去理解这门语言关于继承这方面的本质和特点.闲暇之余做的理解和总结,欢迎各位朋友一起讨论. 本文本主要从两段代码的区别 ...
随机推荐
- 统计字符 比如aaabbcca----3a2b1c1a
package Demo; import java.util.Scanner; /** * Created by chengpeng on 16/11/3. */ /* idea command+al ...
- jquery 项目所用
<script> $(document).ready(function(){ $.ajax({ type:'post', url :'interface.ajax.php', data:{ ...
- 创建view
IF EXISTS(SELECT 1 FROM sys.views WHERE name='V_PARENT_CLIENT') DROP VIEW V_PARENT_CLIENT GO create ...
- python学习day9
目录 一.队列 二.生产者消费者模型 三.协程 四.select\poll\epoll 五.paramiko 六.mysql API调用 一.队列(queue) 队列分以下三种: class queu ...
- Performance of Transport Control Protocol over Dynamic Spectrum Access Links
2007 IEEE 这篇论文主要就是分析了几个版本的TCP协议在DSA网络中的性能问题. 得出的结论是: 大部分现在在用的几个版本的TCP协议,都是能够较好地适应DSA环境,吞吐率都能达到95%.当然 ...
- How to delete the icons of Win7 desktop shortcuts
1. Copy the following bat code in txt type file, 2. save it as file extension type bat, run it as ad ...
- BCB的博客,以及例子(好多传输文件的例子)
http://blog.csdn.net/keyu1711/ http://download.csdn.net/user/keyu1711 http://download.csdn.net/user/ ...
- 闲来瞎扯 -- 在vs2008下编写linux程序
虽说vim很强大,但是个人感觉器代码提示功能不如visual assist来的强大.如何使用visual assist来实现代码的提示功能呢? 首先说明我的环境 : 宿主机是xp(O(∩_∩)O~还是 ...
- C语言的本质(30)——C语言与汇编之ELF文件格式
ELF(Executable and Linking Format)文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,ELF是一种对象文件的格式,用于定义不同类型的对象文件(Obj ...
- 四大图像库:OpenCV/FreeImage/CImg/CxImage
1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法: 然后将图像格式和矩阵运算, ...