mileOfSunshine / blog

2 stars 0 forks source link

Javascript模式 #12

Open mileOfSunshine opened 5 years ago

mileOfSunshine commented 5 years ago

第一章

mileOfSunshine commented 5 years ago

第二章

避免使用eval()

该函数可以将任意字符串当作一个Javascript代码执行。如果一定需要使用eval(),那么可以考虑使用new Function()来替换eval()。

安全隐患:可能执行被篡改过的代码。 避免自动成为全局变量:将eval()调用封装在一个即使(立即执行)函数中。

new Function 与 eval() 区别:

(function() {
  var local = 1
  eval('local = 3; console.log(local)') // => 3
  console.log(local) // => 3
}())

(function() {
  var local = 1
  Function('console.log(typeof local);')(); // => undefined
}())
mileOfSunshine commented 5 years ago

第三章

自调用构造函数

避免在调用构造函数时忘记使用 new 操作符带来的问题。

// 通用方法

if (!(this instanceof arguments.callee)) {
  return new arguments.callee()
}

// 示例
function Person() {
  if (!(this instanceof arguments.callee)) {
    return new arguments.callee()
  }
}
mileOfSunshine commented 1 year ago

策略模式