prototype/constructor/__proto__之prototype】的更多相关文章

1任何对象都有__proto__属性 属性值Object2并不是所有对象都有prototype属性.只有方法对象(构造函数)以及基本数据类型还有Array,有prototype属性;并且所有方法(对象)的prototype属性都是object 在网上有很多关于原型的讲解.在这里我用console.log()的方式给大家呈现. //一.基本数据类型的原型 //console.log(String) String() 这时我们可以把它理解为构造函数 //console.log(typeof Stri…
一.简单使用构造原型加prototype造简单的轮子. 1.想jQ那样获取HTML元素,先看JS代码 function Cmf() { //创建构造函数 this.arry = [] } Cmf.prototype.getNode = function(tag, id) { //给构造函数定义一个getNode方法 if (tag.indexOf('.') == 0) { //如果传入的是类class形式 .nav var oparent = id ? document.getElementBy…
最近由于在找工作,又拿起<JavaScript高级程序设计>看了起来,从中也发现了自己确实还是有很多地方不懂,刚刚看到原型模式这里,今天终于搞懂了,当然,我也不知道自己的理解是否有错. 1.prototype 开头第一句话说,我们每创建一个函数,就会有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含由特定类型或者实例共享的属性和方法. function fn(){}; console.log(fn.prototype);…
1.constructor的字面意思就是构造.它是对象的一个属性,它对应的值是该对象的“构造者” //一.构造函数实例化的对象的constructor function Cmf(n,m){ this.n=n; this.m=m; this.mn=function(){ return this.n+'|'+this.m } } var cmf=new Cmf('c',"q") console.log(cmf.mn()) // c|q console.log(cmf.constructor…
constructor, prototype, __proto__ 详解…
一. Prototype.__proto__与Object.Function关系介绍 Function.Object:都是Js自带的函数对象.prototype,每一个函数对象都有一个显式的prototype属性(普通对象没有prototype),它代表了对象的原型(Function.prototype是一个对象,有constructor和__proto__两个属性,constructor指向构造函数本身,__proto__指向于它所对应的原型对象).__proto__:每个对象都有一个名为__…
大家都说JavaScript的属性多,记不过来,各种结构复杂不易了解.确实JS是一门入门快提高难的语言,但是也有其他办法可以辅助记忆.下面就来讨论一下JS的一大难点-对象布局,究竟设计JS这门语言的人当时是怎么做的?设计完之后又变成了什么? 我们来看一张图:  相信大家对这张图都不陌生了,构造函数有一个prototype属性指向其原型.相反原型也有一个constructor指向构造函数.与此同时实例也有一个constructor指向构造函数,这简直就是互相捆绑生怕找不到啊不是吗? 还有一个我们称…
大家都说JavaScript的属性多,记不过来,各种结构复杂不易了解.确实JS是一门入门快提高难的语言,但是也有其他办法可以辅助记忆.下面就来讨论一下JS的一大难点-对象布局,究竟设计JS这门语言的人当时是怎么做的?设计完之后又变成了什么? 我们来看一张图:  相信大家对这张图都不陌生了,构造函数有一个prototype属性指向其原型.相反原型也有一个constructor指向构造函数.与此同时实例也有一个constructor指向构造函数,这简直就是互相捆绑生怕找不到啊不是吗? 还有一个我们称…
一    Prototype.__proto__与Object.Function关系介绍        Function.Object:Js自带的函数对象.         prototype,每一个函数对象都有一个显示的prototype属性,它代表了对象的原型(Function.prototype函数对象是个例外,没有prototype属性).         __proto__:每个对象都有一个名为__proto__的内部隐藏属性,指向于它所对应的原型对象(chrome.firefox中名…
1.基本类型不是对象(boolean.undefined.number.string) 2.引用类型都是对象(Array,function ,Object) 3.对象是通过函数创建,并且强调,对象字面量也是通过函数创建,举例说明,ES6继承的语法糖 4.函数有的是显式原型prototype 5.对象有的是隐式原型__proto__ 和构造器 constructor 6.但是由于JS中函数也是一种对象,所以函数也拥有__proto__和constructor 7.__proto__ 属性,它是对象…
在开始之前,必须要知道的是:对象具有__proto__.constructor(函数也是对象固也具有以上)属性,而函数独有prototype 在博客园看到一张图分析到位很彻底,这里共享: 刚开始看这图很懵,根本看不懂,但是细品,多品后恍然大悟,然后总结出以下几点,很重要切记 1.切记:对象的内置属性__proto__一定指向的是它构造函数的原型对象 2.切记:对象的内置属性__proto__.__proto__一定指向Object原型对象(Object.prototype) 3.切记:对象的内置…
1.JS中对象的"不同":原型概念 从Java中我们可以很好地去理解 "类" 和 "实例" 两个概念,可是在JavaScript中,这个概念却不一样. JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程. 原型是指当我们想要创建一个具体对象时,并没有像Java中那样有类可以使用,但是却可以利用类似"继承"的方式,这里类似"父类"的对象,就是所谓的原型.(再简单点:…
JS的prototype和__proto__(含es6的class) 一.prototype和__proto__的概念 prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象.它是显示修改对象的原型的属性. __proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性. 用chrome和FF都可以访问到对象的__proto__属性,IE不可以.…
前话 有一个一个装逼的同事,写了一段代码 function a(){} a.__proto__.__proto__.__proto__ 然后问我,下面这个玩意a.__proto__.__proto__.__proto__是啥,然后我一脸懵逼,prototype还知道一点,这个__proto__,还来三个,是个什么鬼.于是我一直不能放下这个问题,虽然我很懒,很不喜欢费脑子,但是这个坎还是过不去,最近两天研究了大半天,就有了这篇文章. 我先说出答案, 上面的值为 null.我还很负责的告诉你,下面的…
有一个一个装逼的同事,写了一段代码 function a(){} a.__proto__.__proto__.__proto__ 然后问我,下面这个玩意a.__proto__.__proto__.__proto__是啥,然后我一脸懵逼,prototype还知道一点,这个__proto__,还来三个,是个什么鬼.于是我一直不能放下这个问题,虽然我很懒,很不喜欢费脑子,但是这个坎还是过不去,最近两天研究了大半天,就有了这篇文章.我先说出答案, 上面的值为 null.我还很负责的告诉你,下面的_a._…
图来源于:http://www.cnblogs.com/smoothLily/p/4745856.html 个人的理解: 1. 所有对象都有 __proto__属性,返回该对象的原型对象.例如f1由语句var f1 = new Foo()生成,那么f1.__proto__就是由构造函数Foo生成的原型对象Foo.prototype. f1.__proto__ === Foo.prototype; //true 2. 所有函数具有prototype属性,这是一个指针,指向函数所生成对象的原型对象.…
过了一段时间,没写 原生的 javascript 的了,感觉天天在用框架写代码,框架写代码完全限定死了你所需要思考的东西,只是在处理一些业务逻辑,真正的代码 都感觉不会写了. 突然发现,框架用的不熟悉,原生的代码也忘得差不多了.感觉很难受,人生不能这样子度过! 重新翻开<javascript 高级程序设计>, 回归到本原.工作上用框架写代码没错,业余时间的话就要自己多写一点原生的代码,或者说研究.模仿.直到自己设计一个 框架出来. js 中的类, 对象, 类的静态变量,类的继承 .functi…
一.函数对象 所有引用类型(函数.数组.对象)都拥有__proto__属性(隐式原型) 所有函数拥有 prototype 属性(显式原型)(仅限函数) 原型对象:拥有 prototype 属性的对象,在定义函数时就被创建 关于 prototype 与__proto__ js中所有的函数都有一个 prototype 属性,该属性引用了一个对象,即原型对象,也简称原型 js对象有一个__proto__属性,指向它的构造函数的prototype属性 对象.__proto__===函数.prototyp…
prototype是函数特有的属性,是Function的静态属性:__proto__是对象特有的属性. 因为函数本身是一种对象,所以函数既有prototype属性也有__proto__属性. 当函数使用prototype属性时,是作为构造函数使用: 当函数使用__proto__属性时,是作为一个对象使用. 另外,__proto__属性内部属性,尽量不要使用.可以用setPrototypeOf()和getPrototypeOf()代替. 1)普通函数分别取值 function C() {} con…
这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和construcator,这几个概念都是相关的,所以一起讲了. 在讲这个之前我们先来说说类,了解面向对象的朋友应该都知道,如果我要定义一个通用的类型我可以使用类(class).比如在java中我们可以这样定义一个类: public class Puppy{ int puppyAge; public Puppy(age){ puppyAge = age; } public void say() { System.out.…
这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和construcator,这几个概念都是相关的,所以一起讲了. 在讲这个之前我们先来说说类,了解面向对象的朋友应该都知道,如果我要定义一个通用的类型我可以使用类(class).比如在java中我们可以这样定义一个类: public class Puppy{ int puppyAge; public Puppy(age){ puppyAge = age; } public void say() { System.out.…
最近在学js,体会了一点点它的灵活性.对于初学者的我,总是被它的灵活感到晕头转向,最近发现了一点东西想与大家分享. JavaScript中的prototype和_proto_: 我们先了解一点js中的基础知识,首先我们先看一段js代码: var object = new Object; console.log("object:", object); object.member1 = "abcd"; var obj = {}; obj.member1 = 10; co…
一.prototype和__proto__的概念 prototype是 注意是 只有函数的一个属性才有的(每个函数都有一个prototype属性),这个属性是一个指针,指向一个普通对象并且不是原型对象.注意不是原型对象.这个对象有个constructor还有一个—__proto__两个属性. 它是显示修改对象的原型的属性. __proto__ 每个对象(注意是对象)都有一个名为__proto__的内部隐藏属性,指向于它所对应的原型对象也就是object. 注意这里不包括new 的function…
//理解各种方法和属性typeof.instanceof.constructor.prototype.__proto__.isPrototypeOf.hasOwnProperty. //1.typeof方法 获取变量的类型,返回:number, string, undefined, object, boolean, function console.log("typeof方法"); var st = "abcd"; console.log(typeof st);//…
今天重温了下Javacript,给大家带来一篇Javascript博文,相信对于Javacript有一定了解的人都听过prototype原型这个概念,今天我们深度的分析下prototype与__proto__. 好了,下面看一个非常简单的例子: var Person = function(name) { this.name = name ; }; var p = new Person("Ben"); console.log(p.name); 代码简单的 你不用说明了,如果现在让大家根据…
作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞懂它们.这里说明一点,__proto__属性的两边是各由两个下划线构成(这里为了方便大家看清,在两下划线之间加入了一个空格:_ _proto_ _),本文基于谷歌浏览器(版本 72.0.3626.121)的实验结果所得.   现在正式开始! 让我们从如下一个简单的例子展开讨论,并配以相关的图帮助理解…
                                   Object                                    1. Object是一个函数(typeof Object;//function).Object构造器创建了一个对象包装器 //Object{} var o = new Object(null); //Object{} var o = new Object(defined); //Number var o = new Object(1); //B…
js里面constructor __proto__  prototype这三个属性比较难理解,在重点研究这三个属性后,在这里做一个笔记, constructor:构造器,每个对象都有这个属性,他指向构造该对象的构造函数,我们可以通过对象.constructor获取到其构造函数, __proto__  :原型机,每一个对象都有这个属性,他指向构造该对象的构造函数的prototype(下面会介绍prototype),如果我们在对象上面找不到某些属性,系统会到__proto__  所指向的构造函数的p…
https://www.zhihu.com/question/34183746 javaScript原型.原型链的定义? prototype:每个函数都有一个prototype(显式原型),这个属性是一个对象(属性的集合),默认有一个叫做constructor(和_proto_)的属性,指向这个函数本身. 所有的实例需要共享的属性和方法,都可以放在prototype对象中,那些不需要的则放在"构造函数"中, 从外界看来,prototype对象好像是实例原型的对象,而实例对象则像是继承了…
看了JS的prototype和__proto__这篇文章,才感觉很清晰了,对于原型这块,以前经常把这些属性弄不清楚, 明白了之后保存下整理下: prototype: 是函数的一个属性(每个函数都有一个prototype属性) __proto__: 是一个对象拥有的内置属性 (prototype是函数的内置属性,__proto__是对象的内置属性) 二.new 的过程 var t= function(){}; var p = new t(); new的过程拆分成以下三步:(1) var p={};…