一.类型 1.JavaScript中分为值类型(string/boolean/null/number/undefind).引用类型(数组.对象.函数): 2.数组.函数.对象都是对象: 对象是由函数创建的,每个对象都有_proto_属性指向构造函数的原型对象(f1._proto===Fn.prototype) eg: function Fn(){}; var f1 = new Fn(); Fn.prototype也是个对象,也有__proto__属性,它是函数Object创建,即(Fn.prot…
转自:http://www.cnblogs.com/starof/p/4190404.html 在javaScript创建对象一文中提到过:用构造函数创建对象存在一个问题即同一构造函数的不同实例的相同方法是不一样的,所以我们用原型把构造函数中公共的属性和方法提取出来进行封装,达到让所有实例共享的目的. 接下来进一步介绍javaScript原型. 一.javaScript原型机制 1.函数与原型的关系 js中创建一个函数,就会自动创建一个prototype属性,这个属性指向函数的原型对象,并且原型…
在javaScript创建对象一文中提到过:用构造函数创建对象存在一个问题即同一构造函数的不同实例的相同方法是不一样的,所以我们用原型把构造函数中公共的属性和方法提取出来进行封装,达到让所有实例共享的目的. 接下来进一步介绍javaScript原型. 一.javaScript原型机制 1.函数与原型的关系 js中创建一个函数,就会自动创建一个prototype属性,这个属性指向函数的原型对象,并且原型对象会自动获得一个constructor(构造函数)属性,指向该函数. 举例:以前面的原型模式创…
原型和原型链的故事 相关文章: 为什么原型继承很重要 先来看看一段小代码用以引入要讲的小故事. function Foo() {}; var f1 = new Foo(); Foo.prototype.label = "Skylor.min"; alert(f1.label); //output: Skylor.min alert(Foo.label); //output: undefined Why? 为什么? 下面来聊聊JavaScript中的原型和原型链种种. 函数对象的prot…
1.构造函数 a.什么是构造函数? 解释:通过关键字new 创建的函数叫做构造函数 作用:用来创建一个对象 废话少说直接上代码,首先我们还是创建一个构造函数人类 然后我们在创建两个实例,一个凡尘 一个吴彦祖!毕竟只有我们2个人的颜值可以进行匹配  我们可以看到凡尘和彦祖都有一个属性name和一个方法eat;那么我们简单思考一下,因为凡尘和彦祖都是通过构造函数new Person创建出来的,那么他们俩个的eat方法是否相等? 打印结果是false.为什么会是false? 这个时候就不得不说一个经典…
1.构造函数 a.什么是构造函数? 解释:通过关键字new 创建的函数叫做构造函数 作用:用来创建一个对象 废话少说直接上代码,首先我们还是创建一个构造函数人类 然后我们在创建两个实例,一个凡尘 一个吴彦祖!毕竟只有我们2个人的颜值可以进行匹配  我们可以看到凡尘和彦祖都有一个属性name和一个方法eat;那么我们简单思考一下,因为凡尘和彦祖都是通过构造函数new Person创建出来的,那么他们俩个的eat方法是否相等? 打印结果是false.为什么会是false? 这个时候就不得不说一个经典…
初始化一个父类,并添加方法 1function Foo(){}2Foo.prototype.sayName = function(){3    return '初始原型';4}56var foo1 = new Foo();7foo1.sayName() //'初始原型' new方式重写原型:切断了新实例与原有原型之间的连接 1function Bar(){} 2Foo.prototype = new Bar(); // 重写原型 3var foo2 = new Foo(); 4foo2.sayN…
现象 经常在网上或者阅读源码时看到下面的代码: Array.prototype.slice.call(arr, 3); 而不是 arr.slice(3); 原因 这是为什么呢, 毕竟下面这种方法更短, 代码看起来也更清晰. 因为使用prototype.fn.call这种方式可以更好的复用代码, 下面这个例子: var divs = document.getElementsByTagName('div'); var first_three_div = divs.slice(3) // TypeEr…
Javascript继承是通过原型链继承的 原型链是依赖__proto__而不是prototype var animal = function(){}; var dog = function(){}; animal.price = 200;// dog.prototype = animal; var tidy = new dog(); console.log(dog.price) //undefined console.log(tidy.price) 如果加上 Function.prototyp…
在javascript中,按照惯例,构造函数始终都应该以一个大写字母开头,而非构造函数则应该以一个小写字母开头.一个方法使用new操作符创建,例如下面代码块中的Person1(可以吧Person1看做是Java或C中的类). var Person1 = function(name){ this.name = name; } 在javascript中一个类被new出来的会经历以下过程: var person1 = new Person1(); 等同于 var person1 = {}; perso…