在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象(Object)和函数对象(Function)。 一般而言,通过new Function产生的对象是函数对象,其他对象都是普通对象。 举例说明:function f1(){//todo } var f2 = function(){//todo }; var f3 = new Function(x,console.log(x));var o1 = {}; var o2 = new Object(); var o3 = new f1();console.log(typeof f1,//functiontypeof f2,//functiontypeof f3,/...
原型是JavaScript中一个比较难理解的概念,原型相关的属性也比较多,对象有”prototype”属性,函数对象有”prototype”属性,原型对象有”constructor”属性。 一、初识原型 在JavaScript中,原型也是一个对象,通过原型可以实现对象的属性继承,JavaScript的对象中都包含了一个”[[Prototype]]”内部属性,这个属性所对应的就是该对象的原型。 “[[Prototype]]”作为对象的内部属性,是不能被直接访问的。所以为了方便查看一个对...
数据属性: 数据属性包含一个数据值的位置,在这个位置可以读取和写入值。 4个描述的行为特性: writable 表示能否修改属性的值。默认为true Enumerable 表示能否过过for in循环返回属性是否可以枚举。 configuralbe 表示是否能过来delete删除属性从来重新定义属性,能否修改其配置。 value 包含这个属性的数据值。读取属性值的时候,从这个位置读取。 写入属性值的时候,把新值保存在这个位置。这个特性的默认值为true。 <script>...
本文实例分析了Javascript原型链的原理。分享给大家供大家参考,具体如下: 一、JavaScript原型链 ECMAScript中描述了原型链的概念,并将原型链作为实现继承的主要方法。其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。在JavaScript中,用 __proto__ 属性来表示一个对象的原型链。当查找一个对象的属性时,JavaScript 会向上遍历原型链,直到找到给定名称的属性为止! 比如现在有如下的代码: 扩展Object类,...
先看一张图,梳理梳理。一、基本概念 【原型链】每个构造函数都有一个对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么,如果原型对象等于另一个原型的实例,此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一个构造函数的指针。如果另一个原型又是另一个原型的实例,那么上述关系依然成立。如此层层递进,就构成了实例与原型的链条。 【原...
JavaScript原型及原型链终极详解 一. 普通对象与函数对象JavaScript 中,万物皆对象!但对象也是有区别的。分为普通对象和函数对象,Object,Function 是JS自带的函数对象。下面举例说明function f1(){}; var f2 = function(){}; var f3 = new Function(str,console.log(str)); var o3 = new f1(); var o1 = {}; var o2 =new Object(); console.log(typeof Object); //function console.log(typeof Function); //function console....
用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,最近看了一些 JavaScript高级程序设计,终于揭开了其神秘面纱。 每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用作构造函数调用(使用new操作符调...
js原型链与继承是js中的重点,所以我们通过以下三个例子来进行详细的讲解。 首先定义一个对象obj,该对象的原型为obj._proto_,我们可以用ES5中的getPrototypeOf这一方法来查询obj的原型,我们通过判断obj的原型是否与Object.prototype相等来证明是否存在obj的原型,答案返回true,所以存在。然后我们定义一个函数foo(),任何一个函数都有它的prototype对象,即函数的原型,我们可以在函数的原型上添加任意属性,之后通过new一个...
本文实例讲述了javaScript的原型链。分享给大家供大家参考。具体分析如下: 对于javascript原型链,以前都觉得是个很深的东西,一直没有理解很明白,今天看了一些介绍后,发现这张图,表示再没有什么语言能比这张图说得清楚了。 看了这张图后突然对javascript有了质的理解。javascript的原型链有显式和隐式两种: 显式原型链:即我们常见的prototype; 隐式原型链:在一般环境下无法访问,即不可见,在FireFox下可以通过__proto__方...
javascript中的每个对象都有一个内置的属性prototype,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。意思是是prototype属性保存着对另一个JavaScript对象的引用,这个对象作为当前对象的父对象。代码如下: A.prototype = new B();理解prototype不应把它和继承混淆。A的prototype为B的一个实例,可以理解A将B中的方法和属性全部克隆了一遍。A能使用B的方法和属性。这里强调的是克隆而不是继承。可以出现这种情...
本文实例分析了javascript原型链继承的用法。分享给大家供大家参考。具体分析如下:代码如下:function Shape(){ this.name = shape; this.toString = function(){ return this.name; } } function TwoDShape(){ this.name = 2D shape; } function Triangle(side,height){ this.name = Triangle; this.side = side; this.height = height; this.getArea = function(){ return this.side...
JavaScript中的继承是通过原型链(prototype chain)来完成的:每个对象内部都有另外一个对象作为其prototype而存在,对象从这个prototype中继承属性(property)。对于每个对象来说,可以用以下三种方式来访问其原型对象:1.__proto__。可以通过对象的__proto__属性来访问其原型对象。该属性仅在Firefox、Safari和Chrome中得到支持,在IE和Opera中不支持。2.Object.getPrototypeOf()。可以将对象作为参数传入Object.getPrototypeOf()方...
一.两个原型很多人都知道javascript是原型继承,每个构造函数都有一个prototype成员,通过它就可以把javascript的继承演义的美轮美奂了. 其实啊,光靠这一个属性是无法完成javascript的继承. 我们在代码中使用的prototype完成继承在这里就不多说了.大家可以查一下资料. 另外一个看不见的prototype成员. 每一个实例都有有一条指向原型的prototype属性,这个属性是无法被访问到的,当然也就无法被修改了,因为这是维护javascript继承的基础...
之前我对Javascript的原型链中, 原型继承与标识符查找有些迷惑, 如, 如下的代码:代码如下: function Foo() {}; var foo = new Foo(); Foo.prototype.label = "laruence"; alert(foo.label); //output: laruence alert(Foo.label);//output: undefined今天看到了如下这个图:Javascript object layout 另外, 在Javascript Object Hierarchy看到: The prototype is only used for properties inherited by objects/instances created ...
私有变量和函数 在函数内部定义的变量和函数,如果不对外提供接口,外部是无法访问到的,也就是该函数的私有的变量和函数。代码如下: <script type="text/javascript"> function Test(){ var color = "blue";//私有变量 var fn = function() //私有函数 { } } </script>这样在函数对象Test外部无法访问变量color和fn,他们就变成私有的了:代码如下: var obj = new Test(); alert(obj...