JavaScript 总结
1. JavaScript prototype属性是一个对象
  
当一个函数在定义之后 就会自动获得这个属性。其初始值是一个空对象。新建了一个名为Cat的构造函数,其prototype为一个对象,constructor和proto都是在prototype创建时,默认的自带属性,创建一个新对象时,就会带有这两个属性,无论其是否为空。
  
当我们创建一个对象的时候。 会自动带有 constructor 和 __proto__这两个属性。但是创建的对象没有prototype属性。 函数类型有 例如JavaScript的内置对象 Array String就有 他们是函数类型的内置对象。
但是像Math JSON 对象类型就没有。但是都有一个__proto__ 所以原型链实际上是靠的是__proto__。
  
虽然对象里面没有prototype属性,但是有constructor属性 他返回的是对象的构造函数。所以只要是函数就会有prototype属性 他返回开始定义的对象。
所以 obj.constructor.prototype === obj.__proto__; 返回true.
  既然每个对象都有一个constructor,而每个constructor又有一个prototype对象,prototype本身又是对象,其肯定也会有它自己的constructor,有种陷入死循环的感觉,但javaScript不会让这个发生,所有对象的爹都是    Object()对象,像这样通过prototype连环指向,层层相连,也就是javaScript里面的原型链(prototype chain)的概念。
  
创建了一个Dog的构造函数,用其创建了一个对象rusty,可以看到rusty就拥有了Dog函数定义时所带有的属性(tail),同时,也拥有Dog的原型中的属性(say函数):
  
  不仅仅拥有Dog和Dog.prototye里面的属性,进一步可以看到rusty的隐藏属性proto与Dog.prototype的关系,以及Dog、Dog.prototype其自身的隐藏属性与Function()、Object()对象的关系。
还有一种情况是将Dog.prototype赋值为新的对象,此时Dog.prototype的构造函数属性的指向会发生改变,而且原先创建的对象rusty不会有新的Dog.prototype的新的属性,但老的属性还是保留:
  
  
JavaScript 总结的更多相关文章
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
		软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ... 
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
		Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ... 
- Javascript 的执行环境(execution context)和作用域(scope)及垃圾回收
		执行环境有全局执行环境和函数执行环境之分,每次进入一个新执行环境,都会创建一个搜索变量和函数的作用域链.函数的局部环境不仅有权访问函数作用于中的变量,而且可以访问其外部环境,直到全局环境.全局执行环境 ... 
- 探究javascript对象和数组的异同,及函数变量缓存技巧
		javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ... 
- 读书笔记:JavaScript DOM 编程艺术(第二版)
		读完还是能学到很多的基础知识,这里记录下,方便回顾与及时查阅. 内容也有自己的一些补充. JavaScript DOM 编程艺术(第二版) 1.JavaScript简史 JavaScript由Nets ... 
- 《Web 前端面试指南》1、JavaScript 闭包深入浅出
		闭包是什么? 闭包是内部函数可以访问外部函数的变量.它可以访问三个作用域:首先可以访问自己的作用域(也就是定义在大括号内的变量),它也能访问外部函数的变量,和它能访问全局变量. 内部函数不仅可以访问外 ... 
- JavaScript权威指南 - 函数
		函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ... 
- JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
		今天为大家分享一下我自己制作的浏览器滚动条,我们知道用css来自定义滚动条也是挺好的方式,css虽然能够改变chrome浏览器的滚动条样式可以自定义,css也能够改变IE浏览器滚动条的颜色.但是css ... 
- JavaScript进阶之路(一)初学者的开始
		一:写在前面的问题和话 一个javascript初学者的进阶之路! 背景:3年后端(ASP.NET)工作经验,javascript水平一般般,前端水平一般般.学习资料:犀牛书. 如有误导,或者错误的地 ... 
- 梅须逊雪三分白,雪却输梅一段香——CSS动画与JavaScript动画
		CSS动画并不是绝对比JavaScript动画性能更优越,开源动画库Velocity.js等就展现了强劲的性能. 一.两者的主要区别 先开门见山的说说两者之间的区别. 1)CSS动画: 基于CSS的动 ... 
随机推荐
- react服务端渲染(同构)
			学习react也有一段时间了,使用react后首页渲染的速度与seo一直不理想.打算研究一下react神奇服务端渲染. react服务端渲染只能使用nodejs做服务端语言实现前后端同构,在后台对re ... 
- 重新开始学习javase_集合_Map
			一,Map之HashMap(转:http://blog.csdn.net/zheng0518/article/details/42197049) 1. HashMap概述: HashMap是基于 ... 
- java_reflect_01
			最近学习java开始接触到了框架,突然觉得java反射很重要,因此在这里做了一些总结(参考园中大苞米大神的文章) 首先我们要认识一下Class: 一.Class类有什么用? class类的实例表示ja ... 
- 高级I/O函数(3)-tee、fcntl函数
			tee函数使用 功能描述:tee函数在两个管道文件描述符之间复制数据,也是零拷贝操作.它不消耗数据,因此源文件描述符仍然可以用于后续的操作. 函数原型: #include <fcntl.h> ... 
- VS2012 ActiveX控件_D接口添加方法事项
			自己写的是Clock控件,所以控件的接口是_DClock 使用向导添加方法后,会在紫色区域自动生成红色代码:(添加Hello方法) dispinterface _DClock { properties ... 
- 【转】POJ题目分类
			初级:基本算法:枚举:1753 2965贪心:1328 2109 2586构造:3295模拟:1068 2632 1573 2993 2996 图:最短路径:1860 3259 1062 2253 1 ... 
- 利用js加载本地图片预览功能
			直接上代码: 经测试,除safari6包括6以下不支持,其他均可正常显示. 原因:safari6不支持filereader,同时不能使用IE滤镜导致失效. fix: 可以利用canvas,解决safa ... 
- javascript 原生 cookie 处理
			来自网络! function getCookie(name) { var start = document.cookie.indexOf(name + "="); var len ... 
- Dede 查询附加表
			<!--使用dede:arclist取出信息 dede_archives 表 $sql="Select 字段 from dede_archivies",但是在默认情况下 de ... 
- 栈的链式存储方法的C语言实现
			/* 编译器:Dev-c++ 5.4.0 文件名:linkStack.cpp 代码版本号:1.0 时间:2015年10月15日18:56:06 */ #include <stdio.h> ... 
