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. CC3的多列属性Multi-column

    CC3的多列属性Multi-column 一直都很想了解这个属性,总是忘了.今天可以研究一下,回想起想了解它的原因,大概是觉得它很容易分开几列.可能会有很多好处和方便. 0 16-09-17 1 16 ...

  2. [转载]linux下mysql 自动备份

    ySQL :: Linux 下自动备份数据库的 shell 脚本Linux 服务器上的程序每天都在更新 MySQL 数据库,于是就想起写一个 shell 脚本,结合 crontab,定时备份数据库.其 ...

  3. 用C实现字符串分割并返回所有子串

    #include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h> ...

  4. Java抽象类深入理解-----模板方法设计模式(Templete Method)

    模板方法设计模式(Templete Method) 定义一个操作中的算法骨架,而将一些可变部分的实现延迟到子类中. 模板方法设计模式使得子类可以不改变一个算法的结构即可重新定义该算法某些特定的步骤. ...

  5. 迁移笔记:php截取文字的方法

    php内置函数 1. iconv iconv_set_encoding('internal_encoding', 'UTF-8'); $str; //字符串的声明 $num=iconv_strlen( ...

  6. LeetCode_Permutations II

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  7. Vim 默认开启行号、语法显示等设置

      在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号.语法高亮度显示.智能缩进等功能的.为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc. 在启动vim时,当前 ...

  8. Fedora 22(15以上版本)开机自启动脚本

    前段时间做了一个网站btdog磁力与btdog电视直播.DHT爬虫需要消耗比较多的资源,原来的服务器不够用了,于是自己使用电脑搭了一台服务器,使用Fedora22系统.在Fedora22中自动写了些开 ...

  9. <转载>Wait and Waitpid

    转载http://www.cnblogs.com/lihaosky/articles/1673341.html 一.Wait #include <sys/types.h> /* 提供类型p ...

  10. springmvc-时间类型转换器

    springmvc 没有默认实现时间类型的转化,需要如下代码实现此功能. @InitBinder public void initBinder(HttpServletRequest request,S ...