//回顾构造函数
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的原型的更多相关文章

  1. Javascript的原型链图

    90%的前端或者js程序员或者老师们对Javascript懂得不比这个多 给手机看的 但是这个图里的所有褐色单向箭头链就是Javascript的原型链(颜色标注对理解js原型链很关键) 这图中的各个_ ...

  2. 深入理解JavaScript系列:史上最清晰的JavaScript的原型讲解

    一说起JavaScript就要谈的几个问题,原型就是其中的一个.说了句大话,史上最清晰.本来是想按照大纲式的行文写一下,但写到后边感觉其实就一个概念,没有什么条理性,所以下面就简单按照概念解释的模式谈 ...

  3. 【面试必备】javascript的原型和继承

    原型.闭包.作用域等知识可以说是js中面试必考的东西,通过你理解的深度也就能衡量出你基本功是否扎实.今天来复习一下javascript的原型和继承,虽说是老生常谈的话题,但对于这些知识,自己亲手写一遍 ...

  4. javascript进阶-原型prototype

    一.javascript原型认识 很多编程语言都有类的概念,我们可以拿原型和类进行比较,看看它们之间的区别以及相同点在哪里. 1.类:类是一个具体事物的抽象所以类是一个抽象的东西,在面向对象中类可以用 ...

  5. 理解JavaScript 的原型属性

    1.原型继承 面向对象编程可以通过很多途径实现.其他的语言,比如 Java,使用基于类的模型实现: 类及对象实例区别对待.但在 JavaScript 中没有类的概念,取而代之的是一切皆对象.JavaS ...

  6. JavaScript - 基于原型的面向对象

    JavaScript - 基于原型的面向对象 1. 引言 JavaScript 是一种基于原型的面向对象语言,而不是基于类的!!! 基于类的面向对象语言,比如 Java,是构建在两个不同实体的概念之上 ...

  7. JavaScript的原型继承

    JavaScript是一门面向对象的语言.在JavaScript中有一句很经典的话,万物皆对象.既然是面向对象的,那就有面向对象的三大特征:封装.继承.多态.这里讲的是JavaScript的继承,其他 ...

  8. javaScript系列 [04]-javaScript的原型链

    [04]-javaScript的原型链 本文旨在花很少的篇幅讲清楚JavaScript语言中的原型链结构,很多朋友认为JavaScript中的原型链复杂难懂,其实不然,它们就像树上的一串猴子. 1.1 ...

  9. JavaScript prototype原型和原型链详解

    用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...

  10. Javascript的原型继承,说清楚

    一直以来对Javascript的原型.原型链.继承等东西都只是会用和了解,但没有深入去理解这门语言关于继承这方面的本质和特点.闲暇之余做的理解和总结,欢迎各位朋友一起讨论. 本文本主要从两段代码的区别 ...

随机推荐

  1. 基本的 html 代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. HDU 1070 - Milk

    给每种牛奶价格和量 要求买最便宜的牛奶 #include <iostream> using namespace std; int t,n; ][]; ],v[]; int main() { ...

  3. silverlight中鼠标放在对象的提示事件

    1.xaml 中实现 <Rectangle x:Name="toolTip" Grid.Column="0" Grid.Row="1" ...

  4. MySQL 初学笔记 ② -- MySQL安装

    1. Ubuntu安装 sudo apt-get install mysql-server //安装mysql服务 sudo apt-get install mysql-client // sudo ...

  5. <link>: rel, href

    Reference: http://www.w3schools.com/tags/tag_link.asp <link> Attributes: Attribute Value Descr ...

  6. HTML5数组方法

    ***************************** forEach方法 *****************************   <script>var data = [1, ...

  7. 恶补ASP.NET基础【1】委托

    委托(delegate)是一种可以把引用存储为函数的类型. 委托的声明类似于函数,但不带函数体,且要使用delegate关键字,委托的声明指定了一个返回类型和一个参数列表. 在定义了委托之后,就可以声 ...

  8. 转的git

    原文链接:http://blog.csdn.NET/dengjianqiang2011/article/details/9260435 如果输入$ Git remote add origin git@ ...

  9. redhat5安装jdk6、eclipse和tomcat6

    redhat5安装jdk6.eclipse和tomcat6 1.安装jdk6 首先下载jdk(jdk-6u13-linux-i586.bin),对于redhat5,本人强烈建议不要安装jdk7,因为有 ...

  10. K-th Number(第k大数)

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 45710   Accepted: 15199 Ca ...