JS的prototype和__proto__、constructor
看了JS的prototype和__proto__这篇文章,才感觉很清晰了,对于原型这块,以前经常把这些属性弄不清楚,
明白了之后保存下整理下:
prototype: 是函数的一个属性(每个函数都有一个prototype属性)
__proto__: 是一个对象拥有的内置属性
(prototype是函数的内置属性,__proto__是对象的内置属性)
二、new 的过程
var t= function(){};
var p = new t();
new的过程拆分成以下三步:
(1) var p={}; 也就是说,初始化一个对象p
(2) p.__proto__ = t.prototype;
(3) t.call(p); 也就是说构造p,也可以称之为初始化p
关键在于第二步,我们来证明一下:
var t= function(){};
var p = new t();
alert(p.__proto__ === t.prototype);//true
这段代码会返回true。说明我们步骤2是正确的。
三、constructor
我们知道,默认情况下,对一个函数前面使用new,可以构造出一个对象。每一个对象都有一个constructor属性,这个constructor属性指向构造出该对象的函数。
        function a(x){
            alert(x);
        }
        var p = new a('');
        alert(p.constructor);
结果如下:

返回的是函数a,把代码改下
        function a(x){
            alert(x);
        }
        var p = new a('');
        var t = p.constructor;
        t('');
结果如下:

JS的prototype和__proto__、constructor的更多相关文章
- JS的prototype和__proto__ Constructor
		一.prototype和__proto__的概念 prototype是 注意是 只有函数的一个属性才有的(每个函数都有一个prototype属性),这个属性是一个指针,指向一个普通对象并且不是原型对象 ... 
- JS的prototype和__proto__(含es6的class)
		JS的prototype和__proto__(含es6的class) 一.prototype和__proto__的概念 prototype是函数的一个属性(每个函数都有一个prototype属性),这 ... 
- Js中Prototype、__proto__、Constructor、Object、Function关系介绍
		一. Prototype.__proto__与Object.Function关系介绍 Function.Object:都是Js自带的函数对象.prototype,每一个函数对象都有一个显式的proto ... 
- 【转】Js中Prototype、__proto__、Constructor、Object、Function关系介绍
		一 Prototype.__proto__与Object.Function关系介绍 Function.Object:Js自带的函数对象. prototype,每一个 ... 
- JS的prototype和__proto__
		一.prototype和__proto__的概念 prototype是函数的一个属性(每个函数都有一 个prototype属性),这个属性是一个指针,指向一个对象.它 是显示修改对象的原型的属性. _ ... 
- js中prototype,__proto__,constructor之间的关系
		首先,我们需要了解三点: 1. 只要创建一个任意新函数,就会根据一个prototype属性,该属性指向函数的原型对象: 2. 每一个原型对象都会自动获得一个constructor属性,该属性只想pro ... 
- js中prototype与__proto__区别
		proto(隐式原型)与prototype(显式原型) 显式原型 explicit prototype property:每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数 ... 
- js中prototype与__proto__的关系详解
		一.构造函数: 构造函数:通过new关键字可以用来创建特定类型的对象的函数.比如像Object和Array,两者属于内置的原生的构造函数,在运行时会自动的出现在执行环境中,可以直接使用.如下: var ... 
- 帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
		作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞 ... 
随机推荐
- JQuery输入框获取/失去焦点行为
			//搜索框获取焦点清除内容 $(function() { $("input").focus(function() { //获取焦点,清空默认内容 $(this).css('colo ... 
- 12 Factor CLI Apps
			CLIs are a fantastic way to build products. Unlike web applications, they take a small fraction of t ... 
- C# 线程会合实例
			有这样一个题目:四个线程t1,t2,t3,t4,向4个文件中写入数据,要求:t1只能写入“1”,t2只能写入“2”,t3只能写入“3”,t4只能写入“4”,对4个文件A,B,C,D写入如下内容: A: ... 
- Huawei E1750 Asterisk
			http://wiki.e1550.mobi/doku.php?id=installation https://wiki.asterisk.org/wiki/display/AST/Mobile+Ch ... 
- bzoj 3622 已经没有什么好害怕的了——二项式反演
			题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3622 令 f[i] 表示钦定 i 对 a[ ]>b[ ] 的关系的方案数:g[i] 表 ... 
- Win10 UEFI +Ghost +intel快速启动 新法完美安装
			http://tieba.baidu.com/p/4767004289?qq-pf-to=pcqq.c2c Win10 如果主板不用Bios 而用UEFI引导启动,速度快,界面好.现在一般都用win1 ... 
- 企业微信jssdk分享接口管理系统
			服务项目 新手技术咨询 企业技术咨询 定制开发 服务说明 QQ有问必答 QQ.微信.电话 微信开发.php开发,网站开发,系统定制,小程序开发 价格说明 200元/月 1000/月 商议 ... 
- 关于 eclipse startexplorer插件 快速打开文件夹
			转自:http://basti1302.github.io/startexplorer/ Just drag-and-drop the button to the Eclipse menu bar t ... 
- Rect参数的简易理解方式
			以屏幕左上角为原点开始计算 向下 和 向右均为整数 new Rect(left, top, right, bottom) Rect参数的意思代表的是矩形的左上角的坐标(left.top)和右下角的坐标 ... 
- EasyMall 项目记录-环境搭建
			一.搭建项目运行的环境 (1)修改hosts文件 更改:C:\Windows\System32\drivers\etc目录下hosts文件 添加:127.0.0.1 www.easyma ... 
