直接进入正题 var white = new Array(256).join(" ") 运行后,我们会发现white.length的长度是255,这个是为什么呢?书上没有给出解答,以下解答是我个人的一些看法 首先我们做个测试 var white = new Array(0).join(" ") .length white 输出 0; var white = new Array(1).join(" ") .length white 输出也是 0;…
@by Ruth92(转载请注明出处) 第3章:字面量和构造函数 一.创建对象的三种方式 // 对象字面量 var car = {goes: "far"}; // 内置构造函数(反模式) var car = new Object(); car.goes = "far"; // 自定义构造函数 var adam = new Person("Adam"); adam.say(); ☛ 对象字面量的优点: 按需创建对象,在程序生命周期内的任何时候都可以…
P25. 如何避免eval()定义全局变量? 如: var jsstring = "var un = 1;"; eval(jsstring); console.log(typeof un); // "number" 方法1:使用new Function().new Function()中的代码将在局部函数空间中运行. var jsstring = "var un2 = 1;"; new Function(jsstring)(); console.…
上一篇啊,我们聊了聊字面量对象和自定义构造函数.这一篇,我们继续,来聊聊new和数组字面量. 三.强制使用new的模式 要知道,构造函数,只是一个普通的函数,只不过它却是以new的方式调用.如果在调用构造函数时忘记制定new操作符会发生什么?这并不会导致语法或运行时错误,但可能导致逻辑错误或意外的行为发生.发生这类问题是因为您忘记使用new操作符,从而导致结构函数中的this指向了全局对象(在浏览器中,this会指向window). // 构造函数 function Waffle() { thi…
一.前言 这篇开始主要介绍代码复用模式(原书中的第六章),任何一位有理想的开发者都不愿意将同样的逻辑代码重写多次,复用也是提升自己开发能力中重要的一环,所以本篇也将从“继承”开始,聊聊开发中的各种代码复用模式. 其实在上一章,我感觉这本书后面很多东西是我不太理解的,但我还是想坚持读完,在以后知识逐渐积累,我会回头来完善这些概念,算是给以前的自己答疑解惑. 二.类式继承VS现代继承模式 1.什么是类式继承 谈到类式继承或者类classical,大家都有所耳闻,例如在java中,每个对象都是一个指定…
1. 应当用数组字面量来创建数组,而不是用new Array() //反模式 var a = new Array('itsy', 'bitsy', 'spider'); //用字面量 var a = ['itsy', 'bitsy', 'spider']; console.log(typeof a); //object console.log(a.constructor === Array); //true 说明:对象的constructor属性引用了该对象的构造函数 console.log((…
JavaScript中var和this定义变量的区别 在js中声明变量时可以使用var和this,但使用this的有很大一部分参考书是没有的,经过查阅相关资料总结如下: 用var和this声明变量,存在一个作用域的问题.var是在当前作用域(scope)中声明一个变量,而this则是指向当前上下文(context). 作用域很好理解,在函数里面,作用域就是执行var语句的那个函数,否则就是root(window或者global). 上下文是在函数调用的时候决定的: foo.bar() // 上下…
javascript中var let const三种变量声明方式 1.var  ①var表示声明了一个变量,并且可以同时初始化该变量. ②使用var语句声明的变量的作用域是当前执行位置的上下文:一个函数的内部(声明在函数内)或者全局(声明在函数外). ③给一个非声明变量赋值会隐式创建一个全局变量(造成代码污染)(全局object的一个属性).声明变量(Declared Variable)和非声明变量(Undeclared Variable)的区别是: (1)声明变量的作用域限制在其声明位置的上下…
看了别人的博客随手记录下 先看一下以下的代码 var a=1,b=2,c=3; (function(){ var a=b=1; })(); console.log(a); console.log(b); 这是大家众所周知的闭包了,没错,闭包的一个很重要的用途就是变量不能在外部访问,不会污染外部变量,所以大家是不是会认为7,8行的结果分别是1 2 呢?其不然,7,8行的正确结果是1,1. 为什么会这样呢?我一开始也是认为结果是结果是1 2,其实JS是这样执行的,在闭包中var声明的是局部变量,所以…
看了别人的博客随手记录下 先看一下以下的代码 var a=1,b=2,c=3; (function(){ var a=b=1; })(); console.log(a); console.log(b); 这是大家众所周知的闭包了,没错,闭包的一个很重要的用途就是变量不能在外部访问,不会污染外部变量,所以大家是不是会认为7,8行的结果分别是1 2 呢?其不然,7,8行的正确结果是1,1. 为什么会这样呢?我一开始也是认为结果是结果是1 2,其实JS是这样执行的,在闭包中var声明的是局部变量,所以…