1:  function Person (name,age) {
   2:              this.name = name;
   3:              this.age = age;
   4:          }
   5:   
   6:          Person.prototype = {
   7:              constructor : Person, // 原型{}这种格式得重新定义指向 要不然默认是Object
   8:              getInfo: function() {
   9:                  return 'A ' + this.name + ' ' + this.age + '.';
  10:              }
  11:          };
  12:   
  13:          var p = new Person('Lily',18);
  14:   
  15:          /**
  16:           * Person的prototype属性指向Person的prototype对象
  17:           * Person的实例p的__proto__属性指向Preson的prototype对象
  18:           * Preson的prototype对象的constructor属性指向Person
  19:           */
  20:          console.log(p.constructor); // Person
  21:          console.log(p.__proto__ == Person.prototype); // true
  22:          console.log(p.__proto__.constructor == Person); // true  p.__proto__ 指向Person的prototype对象 Person的prototype对象constructor属性指向Person构造器
  23:   
  24:          //Object.create EcmaScript5 以上有
  25:          var Person2 = Object.create(p); //复制对象
  26:          console.log(Person2.name);// Lily
  27:          Person2.age = 20;
  28:          console.log(Person2.age);// 20
  29:          console.log(p.age);// 20
  30:   
  31:          var o1 = Object.create({x:1, y:2});
  32:          var o2 = Object.create(Object.prototype);
  33:          console.log(o2);
  34:          console.log(new Object());
   1:  function Person (name,age) {
   2:              this.name = name;
   3:              this.age = age;
   4:          }
   5:   
   6:          Person.prototype = {
   7:              constructor : Person, // 原型{}这种格式得重新定义指向 要不然默认是Object
   8:              getInfo: function() {
   9:                  return 'A ' + this.name + ' ' + this.age + '.';
  10:              }
  11:          };
  12:   
  13:          var p = new Person('Lily',18);
  14:   
  15:          /**
  16:           * Person的prototype属性指向Person的prototype对象
  17:           * Person的实例p的__proto__属性指向Preson的prototype对象
  18:           * Preson的prototype对象的constructor属性指向Person
  19:           */
  20:          console.log(p.constructor); // Person
  21:          console.log(p.__proto__ == Person.prototype); // true
  22:          console.log(p.__proto__.constructor == Person); // true  p.__proto__ 指向Person的prototype对象 Person的prototype对象constructor属性指向Person构造器
  23:   
  24:          //Object.create EcmaScript5 以上有
  25:          var Person2 = Object.create(p); //复制对象
  26:          console.log(Person2.name);// Lily
  27:          Person2.age = 20;
  28:          console.log(Person2.age);// 20
  29:          console.log(p.age);// 20
  30:   
  31:          var o1 = Object.create({x:1, y:2});
  32:          var o2 = Object.create(Object.prototype);
  33:          console.log(o2);
  34:          console.log(new Object());

js 原型的更多相关文章

  1. JS原型链

    JS作为发展了多年了对象语言,支持继承,和完全面向对象语言不同的是,JS依赖原型链来实现对象的继承. 首先JS的对象分两大类,函数对象和普通对象,每个对象均内置__proto__属性,在不人为赋值__ ...

  2. 深入分析JS原型链以及为什么不能在原型链上使用对象

    在刚刚接触JS原型链的时候都会接触到一个熟悉的名词:prototype:如果你曾经深入过prototype,你会接触到另一个名词:__proto__(注意:两边各有两条下划线,不是一条).以下将会围绕 ...

  3. 【09-23】js原型继承学习笔记

    js原型继承学习笔记 function funcA(){ this.a="prototype a"; } var b=new funcA(); b.a="object a ...

  4. js原型

    1.js基本类型和对象类型 js的简单类型包括数字(其中NaN为数字类型).字符串(类似'A'为字符,js没字符类型).布尔值.null值和undefined值.其他所有的值都是对象.数字.字符串和布 ...

  5. js原型链与继承(初体验)

    js原型链与继承是js中的重点,所以我们通过以下三个例子来进行详细的讲解. 首先定义一个对象obj,该对象的原型为obj._proto_,我们可以用ES5中的getPrototypeOf这一方法来查询 ...

  6. JS 原型链图形详解

    JS原型链 这篇文章是「深入ECMA-262-3」系列的一个概览和摘要.每个部分都包含了对应章节的链接,所以你可以阅读它们以便对其有更深的理解. 对象 ECMAScript做为一个高度抽象的面向对象语 ...

  7. js原型解析

    我们都知道javascript因为具有了继承以及变量等等一系列的特性之后才被人们认为具有一门编程语言的资格,在后续的不断发展中,js在原生的基础上扩展了基于jquery等等的库,甚至衍生了像node. ...

  8. 深入理解JS原型链与继承

    我 觉得阅读精彩的文章是提升自己最快的方法,而且我发现人在不同阶段看待同样的东西都会有不同的收获,有一天你看到一本好书或者好的文章,请记得收藏起来, 隔断时间再去看看,我想应该会有很大的收获.其实今天 ...

  9. 学习zepto.js(原型方法)

    学习zepto.js(原型方法)[1] 转载 新的一周,新的开始,今天来学习一下zepto里边的原型方法,就是通过$.进行调用的方法,也是可以通过$.fn进行扩展的方法: $.camelCase(): ...

  10. js原型链部分详细使用说明案例

    1. 'index.html'文件 ```html <!DOCTYPE html> <html lang="en"> <head> <me ...

随机推荐

  1. 如何向java后台的对象中传数组

    1.后台对象的参数需要是是list对象 /* * copyright : GLOBALROAM Ptd Ltd * VmCreateInfo.java * Author: * zhangpengyan ...

  2. 在js中使用json

    在js中使用json var obj = {     "1" : "value1",     "2" : "value2" ...

  3. php 远程下载图片到本地

    大家好,从今天开始,小弟开始写写博客,把自己在工作中碰到的问题的解决方法纪录下来,方便以后查找,也给予别人方便,小弟不才,第一次写博客,有什么不足之处请指出,谢谢! 今天纪录的是怎么通过PHP远程把图 ...

  4. C 中va_list,va_arg,va_start,va_end usage

    1.在学习c语言,难免会遇到多参函数,刚好c中也提供了一些机制:宏函数 #ifdef _M_ALPHA typedef struct { char *a0; /* pointer to first h ...

  5. [置顶] Responder一点也不神秘————iOS用户响应者链完全剖析

    这篇文章想跟大家分享的主旨是iOS捕获用户事件的各种情况,以及内部封装的一些特殊事件. 我们先从UIButton谈起,UIButton大家使用的太多了,他特殊的地方就在于其内置的普通Default/高 ...

  6. Spiral Matrix 解答

    Question Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in ...

  7. c++中经常需要访问对象中的成员的三种方式

    可以有3种方法: 通过对象名和成员运算符访问对象中的成员; 通过指向对象的指针访问对象中的成员; 通过对象的引用变量访问对象中的成员. 一.通过对象名和成员运算符访问对象中的成员 例如在程序中可以写出 ...

  8. VS 2012 显示Link的参数

    VC 通过Link将cl编译出来的.obj文件链接到一起.不过默认设置还是看不到究竟是怎么做的.需要如下设置: 右键点击工程,选择Properties菜单,然后选择左边的Linker->Gene ...

  9. PHP批量审核后台

    /*批量审核方法*/ function setOn_all() { if($_POST) { $p=M('news'); $data=array(); $i=0; foreach ($_POST as ...

  10. ios想要取消执行延时调用的方法

    想要取消执行延时调用的方法: [[self class] cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideDia ...