day8
1- 什么是构造函数?
在js中,使用new关键字调用的函数为构造函数,构造函数首字母一般大写.
2- 创建对象的方式有哪些?举例说明:
(1) 使用new关键字创建:
var person = new Object()
person.name = '张三';
person.age = 12;
person.say = function () {
console.log('你好 我是小小怪叫兽!')
}
console.log(person.age)
person.say();
(2) 字面量形式创建:
var person = {
name: '张三',
age: 20,
gender: '男',
sayHai: function () {
console.log('你好我是大大怪将军')
}
}
console.log(person.name)
(3) 工厂模式创建:
function createPerson(name, age, gender) {
var o = new Object();
o.name = name;
o.age = age;
o.gender = gender;
o.sayHai = function () {
console.log(this.name)
}
return o;
}
var per1 = createPerson('李四', 20, '男');
console.log(per1.name)
(4) 构造函数形式创建:
function Person(name,age,family) {
this.name = name;
this.age = age;
this.family = family;
this.say = function(){
alert(this.name);
}
}
var person1 = new Person("lisi",21,["lida","lier","wangwu"]);
var person2 = new Person("lisi",21,["lida","lier","lisi"]);
(5) 原型模式 (6) 混合模式
3- js 种实现继承的方式:
原型继承
构造函数继承
实例继承
组合继承 (通过原型继承(方法)) + 构造函数继承(属性)
4- 什么是闭包?有什么作用?
函数A中有一个函数B,函数B中总是可以访问函数A中的数据或者变量,这样形成了闭包
闭包模式:函数模式的闭包湖人对象模式的闭包
闭包作用: 缓存数据, 延长作用域链;
5- 什么是预解析?
js代码执行之前会在相应的执行环境中(全局环境,局部环境)预先把一些东西(function,var定义的变量)解析到内存中;
过程:
(1)创建一个当前执行环境下的活动对象
(2)将var声明的变量设置为活动对象的属性(也就是将其添加到活动对象当中),并将其赋值为undefined
(3)将function定义的函数也添加到活动对象当中;
函数定义的方法有:函数表达式,函数声明(当函数声明有提升)
当变量和函数同名时,函数提升比变量提升优先级高


浙公网安备 33010602011771号