-
建立一个类的方法
Person(name,age) 构造一个对象
person.prototype.hi=function(){} 为对象建立一个实例共享的方法
用new Person去实例化一个对象,构造器里的this指针就指向了构造对象的prototype对象。
子类用 Person.call(this,name,age)来继承父类
Student.prototype = Object.create(Person.prototype); //Objcet.create: 创建一个空对象,并且对象原型指向它的参数。要用这句话的原因是,如果不用Object.create,那么,为学生类建立一个prototype属性时,也同时会赋给了Person.
Student.prototype.constructor = Student; //这个不设置,那么这个constructor会指向Person
查看全部 -
AO,意思是函数激活对象。函数被调用后,会有一个arguments,被放置到一个AO对象。
函数会有两个阶段,第一个是变量初始化阶段,将argumnets初始化,将变量声明和函数声明放进去。
查看全部 -
JS解释器是如何找到我们定义的函数和变量的呢?
变量对象VO,用于存储上下文中的变量 函数声明和函数参数。
查看全部 -
每一句语句执行的时候,都会身处在一个环境中,比如在全局环境中,或者在某个函数体内环境中,这个叫执行上下文。
EC是一个栈级的结构。
查看全部 -
var
ft =
function
(){alert(1);};
ft();
//弹出1
var
ft=(
function
(){
return
2;})();
alert(ft);
//弹出2;
第一种,是将匿名函数表达式,赋值给一个变量
第二种,是将一个立即函数执行的结果返回给一个变量,如果函数中没有返回值,那么ft的值是undefined
查看全部 -
function 前面加感叹号,是为了说明这个是函数表达式,而不是函数声明。如果是函数声明,会被执行掉。
查看全部 -
用闭包来进行封装。外部不能直接访问到对象中的属性,但可以通过对象中定义的方法访问到。
查看全部 -
用立即执行的匿名函数!function 包装起循环,可以避免循环闭包。
查看全部 -
闭包的作用,比如在ajax的回调函数里获取上级函数的变量值。
查看全部 -
bind将对象指向函数内部对象。 如果用new关键字,除非返回值是对象,如果不是对象,则返回this空对象,空对象原型会指向foo.prototype,这样就到了this.b属性,整个流程会忽略掉return ,所以返回了100
所以,用new的方式的话, .bind将会被忽略掉。
查看全部 -
函数颗粒化主要运用,是简化前面实参值相同的操作。
查看全部 -
函数颗粒化:把一个函数拆成多个单元。
var func=add.bind(undefined,100)将其中的100,代替掉了add函数中的第一个参数a
func(1,2). //100+1+2=103
var func2 又再来一次,将200代替掉了add函数中的b.
查看全部 -
直接调用对象的函数,this指针指向对象里的对象属性(x:81)。调用对象的函数,并且赋值给一个全局变量,对象函数体内的this,指向全局变量(this.x=9)
用bind方式去调用一个对象的函数,并赋值给一个全局变量。函数内部的this,仍然指向函数体内部的属性(x:81)。
查看全部 -
foo.name 获取函数名
foo.length 获取形参个数
arguments.length 获取实参个数。arguments[0]对应函数的第一个实参,1对应第二个实参,以此类推,arguments可以改变实参的值, 但如果参数没有传值到函数,则arguments改变不了参数值。但argumnets不是Array,无法继承Array的方法。
函数首行输入‘use strict’,可转入严格模式,在arguments.严格模式下,不能改变参数值
查看全部 -
原型链查看全部
举报