capserjs-prototype(上)】的更多相关文章

本系列作为EffectiveJavaScript的读书笔记. 不使用prototype进行JavaScript的编码是全然可行的,比如: function User(name, passwordHash) { this.name = name; this.passwordHash = passwordHash; this.toString = function() { return "[User " + this.name + "]"; }; this.checkP…
通常js类定义和使用的是这样的: var Class=function(){}; Class.prototype.sharedFn=function(){}; var instanceA=new Class(); var instanceB=new Class(); 好处是这样的: 实例A 和 实例B 都继承了sharedFn成员,并且是同一份,节省内存了空间 why? 个人理解: 每个js函数都有一个prototype属性(prototype上会有个constructor属性指向构造函数) 每…
在js里,继承机制是原型继承.继承的起点是 对象的原型(Object prototype). 一切皆为对象,只要是对象,就会有 proto 属性,该属性存储了指向其构造的指针. Object prototype也是对象,其 proto 指向null. 对象分为两种:函数对象和普通对象,只有函数对象拥有『原型』对象(prototype). prototype的本质是普通对象. Function prototype比较特殊,是没有prototype的函数对象. new操作得到的对象是普通对象. 当调…
本文的目的是让大家理解什么情况下把函数的方法写在JavaScript的构造函数上,什么时候把方法写在函数的 prototype 属性上;以及这样做的好处. 为了阅读方便,我们约定一下:把方法写在构造函数内的情况我们简称为 函数内方法 ,把方法写在 prototype 属性上的情况我们简称为 prototype上的方法 首先我们先了解一下这篇文章的重点: 函数内的方法:使用函数内的方法我们可以 访问到函数内部的私有变量 ,如果我们通过构造函数 new 出来的对象需要我们操作构造函数内部的私有变量的…
把方法写在构造函数内的情况我们简称为函数内方法,把方法写在prototype属性上的情况我们简称为prototype上的方法 函数内的方法: 使用函数内的方法我们可以访问到函数内部的私有变量,如果我们通过构造函数new出来的对象需要我们操作构造函数内部的私有变量的话, 我们这个时候就要考虑使用函数内的方法. prototype上的方法: 当我们需要通过一个函数创建大量的对象,并且这些对象还都有许多的方法的时候;这时我们就要考虑在函数的prototype上添加这些方法. 这种情况下我们代码的内存占…
var Person = function(name){ this.name = name; this.say = function(){ return "I am " + this.name; }; } var p=new Person("aaa"); Object的文档: Properties The following table lists properties of the Object Object. Property Description __pro…
javascript是一门动态语言(动态语言Dynamic Programming Language:动态类型语言,意思就是类型的检查是在运行时做的,也就是常说的“弱类型”语言),没有类的概念,有class保留字,但不能用作变量名 原型:Javascript中的每一个对象都有一个内部私有的连接指向另一个对象,这个对象就是原对象的原型 注意:原型是一个对象,其他对象可以通过他实现属性继承 原型链:这个原型对象也有自己的原型,直到对象的原型为null为止(也就是没有原型),这种一级一级的链结构就称为…
从mixin到new和prototype:Javascript原型机制详解   这是一篇markdown格式的文章,更好的阅读体验请访问我的github,移动端请访问我的博客 继承是为了实现方法的复用,如何实现方法的复用呢?最容易想到的,就是: ```js//mixinfunction extend(optional, base){for(var prop in base){if(!prop in optional){optional[prop] = base[prop]}}return opt…
在ES6的Class到来之前,先总结下个人对js中prototype属性的理解. 1.构造函数(大写函数名  this 无return)   2.原型对象(函数.prototype)  3.实例对象( new出来的东西obj ) 备注:本文举例子都以Fn作为构造函数  Fn.prototype作为原型对象  实例对象obj = new Fn() 构造函数中的this是指向window的,只有用了new方法来调用,它才成为了构造函数,new调用时候发生了this指向的改变,指向了实例对象. 为什么…
document.documentElement.contains(document.body) // true document.documentElement.compareDocumentPosition(document.body) //safari5+是把contains方法放在Element.prototype上而不是Node.prototype if (!DOC.contains) { Node.prototype.contains = function (arg) { retur…