摘要: 阅读全文
posted @ 2019-07-16 14:41 就只是小茗 阅读(225) 评论(0) 推荐(0) 编辑
摘要: JavaScript多人开发协作过程中,很可能会意外篡改他人代码。防篡改对象,通过不可扩展、密封、冻结来解决这个问题。 需要特别注意的是:一旦把对象定义为防篡改,就无法撤销了。 1、不可扩展对象 通过 Object.isExtensible([Object]) 可以确定对象是否可以扩展。 true  阅读全文
posted @ 2019-07-01 15:16 就只是小茗 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 在详解JS函数柯里化看到了这么一个例子,有助于大家理解柯里化的执行逻辑,我稍微梳理一下。 add(1)(2)(3).toString() 先执行 add(1) ,此时代码可以理解为已经变成了 _adder(2)(3).toString() ,而变量_args目前只有一个1。接下来开始执行 _adde 阅读全文
posted @ 2019-06-28 23:45 就只是小茗 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 1 window.onload = function() { 2 alert("width: " + getPageScale().pageWidth + ", height: " + getPageScale().pageHeight); 3 }; 4 5 /** 6 * 获取浏览器视口大小 7 * @return {object} 宽,高 8 */ 9 fu... 阅读全文
posted @ 2018-11-13 16:14 就只是小茗 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 构造函数的私有变量,属性和方法都是独立的。 静态私有变量,属性和方法都是共享的。 增强的模块模式,单例的特权方法。 阅读全文
posted @ 2018-11-12 16:15 就只是小茗 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 递归函数实在一个函数通过名字调用自身的情况下构成的。 这里使用的是命名函数表达式的方法实现递归,将这个函数赋值给 factorial 。这样即使在使用过程中对变量进行修改,也不会影响已赋值的递归函数进行调用,保证了代码的安全性。这种方式在严格模式和非严格模式下都适用。 阅读全文
posted @ 2018-11-12 11:44 就只是小茗 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 1 window.onload = function() { 2 var person1 = new SubType("Gee", 20); 3 var person2 = new SubType("Key", 21); 4 5 person1.colors.push("yellow"); 6 alert("person1: " + person1.... 阅读全文
posted @ 2018-11-12 11:07 就只是小茗 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 所谓稳妥对象, 指的是没有公共属性, 而且其方法也不引用this的对象。稳妥对象函数遵循与寄生构造函数类似的模式, 但有两点不同: 一是新创建对象的实例方法不引用this; 二是不使用new操作符调用构造函数。最近在浏览博客时发现很多人好像理解错这个稳妥构造函数了, 这个函数与在《javascrip 阅读全文
posted @ 2018-11-07 16:59 就只是小茗 阅读(416) 评论(0) 推荐(0) 编辑
摘要: 当我们需要构造一个特殊的数据,我们可以通过寄生构造函数来实现。比如我们要格式化一个Array(简单举例),将其变成一个有“|”组成的字符串,我们可以这么做: 注:返回的对象与构造函数或者与构造函数的原型属性之间没有关系;也就是说,构造函数返回的对象与在构造函数外部创建的对象没有什么不同。为此,不能依 阅读全文
posted @ 2018-11-07 16:18 就只是小茗 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 创建自定义类型的最常见方式,就是组合使用构造函数模式与原型模式。 以上方法,对于有其他OO语言经验的开发人员去看,比较容易理解,但是性能上并不推荐。因为每次创建新的实例都需要进行一次判断,哪怕这次的性能损耗是极小的,但毕竟也是有损耗。 我还是将定义方法和共享属性放在外面,通过原型模型去创建自定义方法 阅读全文
posted @ 2018-11-07 16:04 就只是小茗 阅读(232) 评论(0) 推荐(0) 编辑