五大规则

1. 所有的引用类型( 数组 对象 函数 ) 都是 具有对象特性即自由拓展属性 (除了 ”null“)意外

2. 所有的引用类型(数组 对象 函数 ) 都有一个 proto 属性属性值是一个普通的对象

3. 所有的函数 都有一个prototype 属性 ,属性值也是一个普通的对象

4. 所有的引用类型(数组 对象 函数),proto 属性值指向它的构造函数 ”prototype“ 属性值

5. 当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性那么会去它的__proto__(即它的构造函数的prototype寻找)

示例

<script>

	// 构造函数

	function Foo(name , age){

		this.name = name;
this.age = age;
this.class = "class-1"; return this; // 默认有这一行
} var f = new Foo( "bobo" ,22); // 实例化对象 var a = {} 其实 是 var a = new Object(); var a = [] 其实 是 var a = new Array(); function Foo(){} 其实 是 var Foo = new Function(); 使用instanceof 判断函数是否是一个变量的构造函数 如何判断一个变量是不是数组 : 用instanceof Array
 // 二、原型规则和示例

 // 原型规则是学习原型链的基础

1. 所有的引用类型( 数组 对象 函数 ) 都是 具有对象特性 即自由拓展属性 (除了 ”null“)意外

	 拓展性
var obj = {} ; a.age = 100;
var arr = [] ; b.a = 100;
function fn (){}
fn.a = 100;

2. 所有的引用类型(数组 对象 函数 ) 都有一个 proto 属性,属性值是一个普通的对象

	 // __proto__ 隐式类型

	 console.log(obj.__proto__);
console.log(arr.__proto__);
console.log(fn.__proto__);

3. 所有的函数 都有一个prototype 属性 ,属性值也是一个普通的对象

	 // prototype 显示类型

	 console.log( fn.prototype );

4. 所有的引用类型(数组 对象 函数),proto 属性值指向 它的构造函数 ”prototype“ 属性值

	 console.log( obj.__proto__ === Object.prototype)

5. 当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性 那么会去它的__proto__(即它的构造函数的prototype寻找)

	 // 构造函数

	 function Foo(name , age ){

	 	this.name = name ;
} Foo.prototype.alertName = function(){ alert( this.name );
}
	 // 创建示例

	 var f = new Foo("zhangsan");

	 f.printName = function(){

	 	console.log(this.name);
} // 测试 f.printName();
f.alertName();

6. this

7. 循环对象自身的属性

	 var item ;

	 for( item in f ){

	 	高级浏览器已经在 for in 中屏蔽了来自原型(prototype)的属性

	 	但是这里建议大家还是加上这个判断

	 	保证程序的健壮性

	 	if( f.hasOwnProperty(item)){

	 		console.log(item)

	 	}
} </script>

js 原型规则与示例的更多相关文章

  1. JS中的原型规则与原型链

    1. 原型规则 A. 所有的引用类型(数组.对象.函数),都具有对象特性,即可自由扩展属性: var arr = []; arr.a = 1;B. 所有的引用类型(数组.对象.函数),都有一个_pro ...

  2. js原型

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

  3. JS 原型链图形详解

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

  4. js 原型链和继承(转)

    在理解继承之前,需要知道 js 的三个东西: 什么是 JS 原型链 this 的值到底是什么 JS 的 new 到底是干什么的 1. 什么是 JS 原型链? 我们知道 JS 有对象,比如 var ob ...

  5. js原型浅谈理解

    之前在学习原型(prototype)的时候,一直对原型的理解不是很清晰,只是知道每个对象都有一个原型,然后在js中万物又皆对象.在这里谈一下自己对于js原型的简单理解吧. 原型可以实现属性和方法的共享 ...

  6. JS原型链与继承别再被问倒了

    原文:详解JS原型链与继承 摘自JavaScript高级程序设计: 继承是OO语言中的一个最为人津津乐道的概念.许多OO语言都支持两种继承方式: 接口继承 和 实现继承 .接口继承只继承方法签名,而实 ...

  7. JS(原型和原型链)

    (学习自慕课网<前端JavaScript 面试技巧> JS(原型和原型链) 题目1.如何准确判断一个变量是数组类型 使用 instanceof 方法 题目2.写一个原型链继承的例子 实例: ...

  8. 【学习笔记】深入理解js原型和闭包系列学习笔记——精华

    深入理解js原型和闭包笔记: 1.“一切皆是对象”,对象是属性的集合. 丨 函数也是对象,但是使用typeof时为什么函数返回function而 丨  不是object呢,js为何要对函数做这样的区分 ...

  9. 【学习笔记】深入理解js原型和闭包(12)——简介【作用域】

    提到作用域,有一句话大家(有js开发经验者)可能比较熟悉:“javascript没有块级作用域”.所谓“块”,就是大括号“{}”中间的语句.例如if语句: 再比如for语句: 所以,我们在编写代码的时 ...

随机推荐

  1. 在开发中使用Mockito进行测试

    关于单元测试的一些问题 当我们Javaweb项目中编写单元测试的时候,通常会面临一个普遍的问题:需要测试的类会有很多依赖,而这些依赖的类或者对象又会有很多别的依赖,导致我们在写单元测试的时候几乎需要把 ...

  2. vue2.0 如何在hash模式下实现微信分享

    最近又把vue的demo拿出来整理下,正好要做"微信分享"功能,于是遇到新的问题: 由于hash模式下,带有"#",导致微信分享的签证无效:当改成history ...

  3. angular4.0命令行汇总

    查看ng命令行 ng help 创建项目 ng new projectName ng new projectName --routing[--routing表示创建带路由的项目] 配置依赖 npm i ...

  4. JS ajaxfileUpload 一次性上传多个input控件 上传多个文件

    本方法适用于一次性上传多个input框输入的文件,如下图所示,任务是需要一次上传两个input框提供的两个文件. 具体方法: 1.修改ajax调用方法 如上图所示,只需要将ajaxFileUpload ...

  5. Hadoop 2.6.0 完全分布式平台搭建

    一.准备软件环境: hadoop-2.6.0.tar.gz CentOS release 6.5 jdk-7u67-linux-x64.tar.gz 网络配置: master1            ...

  6. Visual Studio Code+phpstudy(WampServer、LNMP...)为小白打造PHP开发环境

    VS Code是微软近年推出的一款文本编辑器, 相关下载:https://code.visualstudio.com/Download phpstudy是将Apache/Nginx.PHP.MySQ等 ...

  7. PE文件详解二

    本文转自小甲鱼的PE文件相关教程,原文传送门 咱接着往下讲解IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用! 接着我们来谈谈 IMAGE_OPTIONAL_HEADER 结构 ...

  8. 二叉树——遍历篇(递归/非递归,C++)

    二叉树--遍历篇 二叉树很多算法题都与其遍历相关,笔者经过大量学习.思考,整理总结写下二叉树的遍历篇,涵盖递归和非递归实现. 1.二叉树数据结构及访问函数 #include <stdio.h&g ...

  9. echart(2),模拟数据导入篇

    先上图,就是介样子的: 所模拟的效果就是讲左下角的li里面的数据取出来,然后用环形图的展示出数据. 看代码截图: 1.总的框架图: 2.循环取数据的js代码: 3.echart提供额官方api的代码 ...

  10. 一段shell脚本分析

    工作中碰到这样的需求: 1.每天定时要执行python脚本生成excel 2.将生成的excel拷贝到特定目录下 3.通过python发送脚本发送给特定的接收者 因为之前没有接触过shell脚本,同事 ...