prototype和_proto_】的更多相关文章

一.概念 1.Prototype:每一个构造函数都有一个原型对象,这个对象就是Prototype.这个构造函数如何找到他的原型对象呢?每个构造函数都会有一个prototype属性,指向它的原型对象. 2.constructor:每个原型对象都包含一个指向构造函数的指针,这个指针就是constructor,从而实现了构造函数和其原型之间的双向绑定.a.prototype.constructor指向a 3._proto _ :所有的对象都含有_proto_标签,a对象有_proto_标签,a.pro…
继承的核心是原型链,它的基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法. 例:SubType.prototype = new SuperType (); var instance = new SubType (); 则原型链的关系是: instance -> SubTyoe -> SuperType -> Object 但是这种方法最大的不足是:声明继承的时候创建的对象总要进行初始化后. 解决问题的方法有:1.在构造器中添加判断条件:2.再定义一个空的构造器,并重写它的原…
案例代码: function People(name) { //对象属性 this.name = name; //对象方法 this.Introduce = function() { alert("My name is " + this.name); } } //类方法 People.Run = function(){ alert("I can run"); } //原型方法 People.prototype.IntroduceChinese = function(…
1.对象的内部属性[[prototype]]和属性__proto__:每个对象都具有一个名为__proto__的属性: 2.函数的属性prototype:每个构造函数(构造函数标准为大写开头,如Function(),Object()等等JS中自带的构造函数,以及自己创建的)都具有一个名为prototype的方法(注意:既然是方法,那么就是一个对象(JS中函数同样是对象),所以prototype同样带有__proto__属性): 3.每个对象的__proto__属性指向自身构造函数的prototy…
__proto__(隐式原型)与prototype(显式原型) 显式原型 explicit prototype property:用来实现基于原型的继承与属性的共享. 每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数的原型对象. Note:通过Function.prototype.bind方法构造出来的函数是个例外,它没有prototype属性. 隐式原型 implicit prototype link:构成原型链,同样用于实现基于原型的继承.举个例子,当我们访问o…
一直认为原型链太过复杂,尤其看过某图后被绕晕了一整子,今天清理硬盘空间(渣电脑),偶然又看到这图,勾起了点回忆,于是索性复习一下原型链相关的内容,表达能力欠缺逻辑混乱别见怪(为了防止新人__(此处指我)__被在此绕晕,图片就放在末尾了.) 以下三点需要谨记 1.每个对象都具有一个名为__proto__的属性: 2.每个构造函数(构造函数标准为大写开头,如Function(),Object()等等JS中自带的构造函数,以及自己创建的)都具有一个名为prototype的方法(注意:既然是方法,那么就…
一直认为原型链太过复杂,尤其看过某图后被绕晕了一整子,今天清理硬盘空间(渣电脑),偶然又看到这图,勾起了点回忆,于是索性复习一下原型链相关的内容,表达能力欠缺逻辑混乱别见怪(为了防止新人__(此处指我)__被在此绕晕,图片就放在末尾了.) 以下三点需要谨记 1.每个对象都具有一个名为__proto__的属性: 2.每个构造函数(构造函数标准为大写开头,如Function(),Object()等等JS中自带的构造函数,以及自己创建的)都具有一个名为prototype的方法(注意:既然是方法,那么就…
一直认为原型链太过复杂,尤其看过某图后被绕晕了一整子,今天清理硬盘空间(渣电脑),偶然又看到这图,勾起了点回忆,于是索性复习一下原型链相关的内容,表达能力欠缺逻辑混乱别见怪(为了防止新人__(此处指我)__被在此绕晕,图片就放在末尾了.) 以下三点需要谨记 1.每个对象都具有一个名为__proto__的属性: 2.每个构造函数(构造函数标准为大写开头,如Function(),Object()等等JS中自带的构造函数,以及自己创建的)都具有一个名为prototype的方法(注意:既然是方法,那么就…
prototype对象里面方法及属性是共享的...... 1.JavaScript 中每一个对象都拥有原型链(__proto__)指向其构造函数的原型( prototype),object._proto_是个例外! 2.JavaScript 中每一个函数都拥有原型( prototype ),原型也是一个对象,这个对象包括:原型链.原型方法(属性).函数构造,同理它的原型链指向其构造函数的原型. 3.当访问一个对象或者函数上的属性时,先尝试访问自身上的属性,再通过原型链尝试访问其创造构造函数那个原…
给自己关于原型的学习分了一个大类,主要跟踪学习js的原型.--来自<JavaScript面向对象编程指南>的笔记,这本书难度适中,适合我们这种js基础不牢的人学习. 原型这块有两个属性:prototype 和 _proto_,容易别混淆,看了前面的基础,决定从这里开始整理我的学习笔记. 先上上代码理解: var monkey = { //声明一个对象 feeds : "bananas", //定义一些属性 breathes: "air" }; funct…
最近在学js,体会了一点点它的灵活性.对于初学者的我,总是被它的灵活感到晕头转向,最近发现了一点东西想与大家分享. JavaScript中的prototype和_proto_: 我们先了解一点js中的基础知识,首先我们先看一段js代码: var object = new Object; console.log("object:", object); object.member1 = "abcd"; var obj = {}; obj.member1 = 10; co…
[_proto_与prototype] 1.prototype(函数的原型):函数才有prototype.prototype是一个对象,指向了当前构造函数的引用地址. 2._proto_(对象的原型对象):所有对象都有_proto_属性.当用构造函数实例化一个对象时,会将新对象的_proto_属性指上构造函数的prototype. zhangsan._proto_==Person.prototype 所有对象,最终都会指向Object()的prototype [原型链] 1.通过构造函数 new…
在javascrpit中每个函数中都有一个prototype属性,在其创建的时候,无论是用var method = function(){}或者 var method = new Function()或者function method(){}三种方法中哪一种方法去创建这个变量,其中都会自带有prototype属性.prototype属性是一个对象,其中默认会含有constructor属性.该属性是指向函数本身的一个指针. 向上面定义的method方法,如果该方法时一个构造函数,那个用该构造函数创…
最近几天一直在研究JavaScript中原型的机制,从开始的似懂非懂,到今天终于有所领悟.不敢说彻底理解,但是起码算知道怎么回事了. 为什么一开始似懂非懂 开始了解一遍原型机制后,感觉知其然但不知其所以然,只知道每个函数(Foo)内部都有一个原型对象(prototype),并且该函数对象的实例(new Foo())会有一个内部指针(_proto_)指向该原型.如下图所示: 这个机制不算复杂,但也是知其然不知其所以然,主要是有下面两个疑问: 1.函数(Foo)维护这个prototype对象有什么用…
1.关于for in for in : 遍历对象中的可枚举的属性 例子1:for in 遍历对象的键为String类型,所以调用时用Object[key]形式,而不用Object.key形式 <script> var obj = { name: "zxq", age: 22, sex: "男" } for (var key in obj) { console.log(key + ", " + obj[key]); //正确 conso…
除了可以在类的构造器方法中定义方法和属性外,也可以使用 prototype 定义方法和属性.每个类都有这个属性,该属性是一个静态属性,因此无需实例化,只需使用类引用该属性即可. 1.1 使用 prototype 定义方法: function Person(myName,myAge){ this.nickName = myName; this.age = myAge; } Person.prototype.showInfo = function(){ return("hi"+this.n…
prototype与_proto_ 对象的 prototype 属性的方法.属性为对象所属的那一"类"所共有.对象原型链通过 proto 属性向上寻找. 为 proto 指定 null 之外的原始类型(Number, String, Boolean, undefined, Symbol)值是无效的. 通过构造函数或者 {} 方式创建的对象的 prototype 属性默认为 undefined var a = { x: 10, calculate: function (z) { retu…
一,基础. 1,Node的包管理器:npm; 安装node环境时会自动安装. 本地模式获取一个包:npm install [package_name] 此时包被安装到当前木的node_modules子目录下. 全局模式获取一个包:npm install -g [package_name] 全局模式安装的包不能直接通过require使用,但通过npm link命令可以在当前目录创建一个指向全局包的链接.比如,如果已经通过 npm install -g express 安装了 express, 这时…
垃圾回收:http://www.cnblogs.com/dolphinX/p/3348468.html 引用计数和标记清除 作用链和闭包:http://www.cnblogs.com/dolphinX/p/3280876.html JavaScript内部机制深入讲解 原型链 http://www.cnblogs.com/onepixel/p/5024903.html http://www.cnblogs.com/sitemanager/p/3535959.html  new关键字 http:/…
1.类型 string number object boolean null undefined symbol (es6) attention : (typeof null) 值为 'object', (typeof undefined)值为:'undefined',其余的如自己所想. null的定义:primitive value that represents the intentional absence of any object value.用来表示故意 丢失的一个对象类型(objec…
写在前面的总结: JS当中创建一个对象有好几种方式,大体上就是以下几种: ①通过var obj ={...} 这种方式一般称为字面量方式,{}直接写需要定义的字段 ②var obj = new Object() Object对象是JS的内建对象 ③通过构造函数创建对象 例如: function father(){ this.name = "I'm your father!" } var f = new father(); 这里通过构造函数的方式创建了一个对象实例f ④通过Object.…
经过几天研究查找资料,对原型终于有点理解了,今天就做下总结,不对之处,希望各位能够提出. 1.每一个Javascript对象(null除外)都和另一个对象相关联,“另一个”对象就是我们今天所要总结的原型,每一个对象都从原型继承属性. 2.所有通过对象直接量创建的对象都具有同一个原型对象,并可以通过Javascript代码Object.prototype获取对原型对象的引用. 3.通过关键字new和构造函数调用创建的对象的原型就是构造函数的prototype属性的值. 看下图 这幅图是从一个外国网…
js原型 问题:什么是js原型? js每声明一个function,都有prototype原型,prototype原型是函数的一个默认属性,在函数的创建过程中由js编译器自动添加. 也就是说:当生产一个function对象的时候,就有一个原型prototype. 举个栗子: 是不是还看到了一个_proto_的属性?!骚年,你的眼睛不错~待会在解释prototype和_proto_的基友关系! prototype的属性值是一个对象,是属性的集合,是属性的集合,是属性的集合,重要事情说三遍! 为什么要…
原型是js中的难点加重点,也是前端面试官最爱问的问题之一,因为面试官可以通过被面试者对原型的理解.来判断被面试者对js的熟悉程度. 原型的定义 Js所有的函数都有一个prototype属性,这个属性引用了一个对象,即原型对象,也简称原型.这个函数包括构造函数和普通函数,我们讲的更多是构造函数的原型,但是也不能否定普通函数也有原型. 先看一下普通函数的原型 例如: function animal(){ } //这个函数就有原型属性,引用的对象就是object 今天看了一个视频,那位老师讲的很清晰,…
1.通过Object构造函数和对象字面量来创建对象缺点:使用同一个接口创建很多的对象,会产生大量的重复代码.比如我需要创建人的对象,并且需要三类人,医生.工程师.老师,他们可以抽象出很多属性,比如姓名.年龄.工作等,只是各自的值不一样,如果这里我用Object或者对象字面量来创建的话,那我必须每个人都写一次这三个属性,造成了代码重复. 2.思考下方法一的问题,我们发现我们可以通过一个工厂来创建对象,这样做的好处是,我们能把一些共同的属性封装到工厂里面,而我们创建对象时,只需要把对象的参数,传递给…
JavaScript. The core. 1.对象 2.原型链 3.构造函数 4.执行上下文堆栈 5.执行上下文 6.变量对象 7.活动对象 8.作用域链 9.闭包 10.this值 11.总结 这篇文章是“ECMA-262-3 in detail”系列的一个摘要和总结.每一部分包含了对应章节的连接引用,所以你可以仔细去阅读得到一个更深刻的理解.适合的读者:资深程序员,专家.我们从探讨对象的概念开始,这也是ECMAScript的奠基石. 对象 ECMAScript,一个高度抽象的面向对象语言.…
在讲js的原型之前,必须先了解下Object和Function. Object和Function都作为JS的自带函数,Object继承自己,Funtion继承自己,Object和Function互相是继承对方,也就是说Object和Function都既是函数也是对象. console.log(Function instanceof Object); // true console.log(Object instanceof Function); // true Object 是 Function…
最近做web项目,接触了jquery等框架,虽然使用方便,但是还是想学习下Javascript,今天分享下最近对js原型继承的理解,不足之处欢迎指正. 一.构造器的原型属性与原型对象 刚接触js时通常依样画瓢,用函数new一个实例,也不知道其原因,只听说js中函数即对象.原来js中没有采用Java等语言中的类继承体系,而是使用原型对象(prototype)实现继承体系,具体说是利用“构造器”实现类的功能. 首先解释下原型继承中的两个重要概念:原型属性.原型对象(实例). 就js对象系统而言,创建…
var F = function(){}; F.prototype.a = function(){}; Object.prototype.b = function(){}; Function.prototype.c = function(){}; var f = new F(); f.name = '111'; console.log(f) 打印f结果:实例化自构造函数F的对象,f有一个私有的name属性 展开对象 对象 f 下有 name 属性和 _proto_ 属性,所有对象在创建时都有一个…
继承 说道这个继承,了解object-oriented的朋友都知道,大多oo语言都有两种,一种是接口继承(只继承方法签名):一种是实现继承(继承实际的方法) 奈何js中没有签名,因而只有实现继承,而且靠的是原型链实现的.下面正式的说一说js中继承那点事儿 1.原型链 关于原型链在上一节面向对象之原型提了一些,这节好好说一说. 原型链:实现继承的主要方法,利用原型让一个引用类型继承另一个引用类型的属性和方法. 回顾:构造函数,原型,实例三者的关系 每一个构造函数都有一个原型对象(Person.pr…