构造函数

1.
JavaScript不是一个面向对象(o o)的语言,它只是基于对象(b o)。

2.
构造函数与其他函数的唯一区别就在于调用它们的方式不同,构造函数也是函数,不存在定义构造函数的特殊语法。任何函数,只要通过new操作符来调用,那它就可以作为构造函数。

3.
构造函数里边可以出现任何语句。

4.
对象和JSON的区别:JSON就是JavaScript Object Notation,JS对象表示法。是JS
对象的严格子集。JSON要求所有属性必须加双引号,JS不需要。

5.

调用函数的方式:1>圆括号直接调用;2>对象打点调用;3>定时器调用;
4>事件处理函数调用;5>数组枚举调用;6>用new运算符的调用函数
它们体现的不同点就是函数的上下文不同,它们的this不一样。
(1)
用new运算符调用一个函数的时候,会经历四步走:
1>函数内部悄悄地创建一个局部变量,是一个空对象{};
2>函数将自己的上下文设置为这个{},即所有语句中的this就表示这个空对象;
3>函数将执行所有语句
4>所有语句执行后,函数将return这个对象,函数将自己的上下文返回。

我们发现用new操作符,可以返回具有相同属性群的对象。

(2)
函数用圆括号调用函数的上下文为window对象
所有的全局变量都是window对象的属性,而函数里面的局部变量,不是任何的属性,就是一个变量。

(3)
函数作为一个对象的方法,对象打点调用,函数的上下文就是这个对象。
对象.函数()
this就相当于这个对象。

(4)
函数是事件处理函数,函数的上下文就是触发这个事件的对象。

(5)
定时器调用函数,上下文就是window对象
备份this
var self= this;
this.style = ;

(6)
数组中存放的函数,被数组索引调用,this就是这个数组。

6.
call() 和 apply()
这两个函数都是函数的方法,只有函数能打点调用,表示用指定的上下文来执行这个函数。
【语法】
函数.call(上下文)
函数.apply(上下文)

区别:function.call(obj,6,7,8)
function.apply(obj,[6,7,8])
两个函数的区别体现在参数上,此时我们要执行的fun函数可以接受参数.apply()需要用数组表示参数。.call()用逗号隔开罗列参数。

7.
原型模式 prototype() 只有函数有prototype属性

我们创建的每个函数都有一个prototype属性,指向一个对象。

**【好处】:**可以让所有对象实例共享它所包含的属性和方法。
prototype属性的值是一个对象,这个函数new出来的东西的_proto_
指向这个对象。

【例】:

function People(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
}
var xiaoming = newPeople("小明","12","男");
People.prototype = xiaoming._proto_
alert(xiaoming._proto_);

8.arguments.callee
arguments.callee是一个指向正在执行的函数的指针,因此它可以用来实现对函数的递归调用。

【例】:

function factorial(num){
if(num <= 1){
return 1;
}else{
return num*arguments.callee(num-1);    //arguments.callee = 正在执行的函数factoria()
     }
}

在编写递归函数时,使用arguments.callee总比使用函数名更保险。
在函数内部,如果想得到函数自身,用this是不可能的,我们必须使用arguments.callee

【注】
在严格模式下,不能通过脚本访问arguments.callee,访问这个属性会导致错误。不过,可以使用命名函数来完成相同的结果。例如:

var factorial = (function f(num){
if(num <= 1){
return 1;
}else{
return num * f(num-1);
}
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值