2016-10-12 曹强
this的指向大概可以分成四种: * 作为对象的方法调用 * 作为普通函数调用 * 构造器调用 * Function.prototype.call或Function.prototype.apply调用 1. 作为对象的时候,this指向该对象 var obj = { a: 1, getA: function() { alert(this === obj); //true; alert(this.a); //1 } }; obj.getA(); 2. 作为普通函数调用,this总是指向全局对象(在浏览器中就是window) window.name = 'global 继续阅读 »
2016-10-13 曹强
php
简介 在[PHP设计模式(八):工厂模式][2]中我们介绍了创建设计模式(Creation patterns)中的工厂模式,下面我们将介绍另一种原型设计模式(Prototype Method)。 在PHP中,原型设计模式依靠cloning复制对象来实现。通过cloning构造的对象,将大量节省新对象的构造时间。 何时使用原型设计模式? 简单来说,当你希望根据已有的对象来创建新对象时。 为什么会有这种需求?想象一下,你在做细胞分裂的项目,每一个细胞都是一个对象,现在你有一个细胞类,每一个新的细胞都是由这个类生成的,不同的细胞只是内部的状态参数不同。 当分裂到第N代的时候,已经和初代大不一样了,你是愿意使用第N代的副本 继续阅读 »
2016-10-12 曹强
享元模式的核心是运用共享技术来有效支持大量细粒度的对象。如果系统中因为创建了大量类似的对象而导致内存占用过高,享元模式就非常有用了。在JavaScript中,浏览器特别是移动端的浏览器分配的内存不算多,如何节省内存就成了一件非常有意义的事。 初识 假设有个内衣工厂,要50个男模50个女模,你可能会这么写程序: var Model = function(sex, underwear) { this.sex = sex; this.underwear = underwear; } Model.prototype.takePhoto = function() { console.log('sex=' + th 继续阅读 »
2015-08-06 Jason Liao
先通过一张图来了解一下 prototype 和 __proto__ 继续阅读 »
2015-06-27 W.Y.
ES6
本文将讨论使 JavaScript 函数更有表现力的两个特性:Rest 参数和参数默认值。 Rest 参数 通常,我们需要创建一个可变参数的函数,可变参数是指函数可以接受任意数量的参数。例如,String.prototype.concat 可以接受任何数量的字符串作为参数。使用 Rest 参数,ES6 为我们提供一种新的方式来创建可变参数的函数。 我们来实现一个示例函数 containsAll,用于检查一个字符串中是否包含某些子字符串。例如,containsAll("banana", "b", "nan") 将返回true,containsAll("banana", "c", "nan") 将返回 false。 下面是传统的 继续阅读 »
2015-04-19 Jason Liao
从一个视频里接触到 JavaScript 的get和set 一般来说,我们是怎么给我们类的属性定义get和set方法的呢 ```javascript var Person = function (age) { this.age = age; }; Person.prototype = { getAge: function () { return this.age; }, setAge: function (age) { this.age = age; } }; var p1 = new Person(19); var p2 = new Person(23); ``` 继续阅读 »
2017-12-29 AnnatarHe
原文地址: Building Blockchain in Go. Part 1: Basic Prototype 继续阅读 »
2015-08-09 Klaus Ma
What Is Google C++ Mocking Framework? When you write a prototype or test, often it's not feasible or wise to rely on real objects entirely. A mock object implements the same interface as a real object (so it can be used as one), but lets you specify at run time how it will be used and what it should do (which methods 继续阅读 »
2017-03-18 AnnatarHe
Array.prototype.sort 这个地方是实现不同而导致的问题,而且我认为这属于一个比较重大的坑。 表现上是:safari 和 chrome 两者的结果返回是不一致的。 // 在chrome中: [1, 10, 100].sort(x => 10 - x) // 继续阅读 »
2016-10-12 曹强
状态模式的关键是区分事物内部的状态,事物内部状态的改变往往会带来事物的行为改变。 电灯程序 首先给一个不用状态模式的电灯程序例子: var Light = function() { this.state = 'off'; //电灯初始状态off this.button = null; //电灯开关按钮 }; Light.prototype.init = function() { var button = document.createElement('button'), self = this; button.innerHTML = '开关'; this.button = document. 继续阅读 »