JavaScript
(1)JS中的对象是什么?
JavaScript 中的所有事物都是对象:字符串、数字、数组、日期等等。
(2)JS的对象和Java,C#中的对象有什么区别?
java是面向对象的,也就是有继承,封装,多态。
js是基于对象的,就是没有上述三点。js的继承等是通过原型链或其他方法进行实现的,ECMAscript6的class(类)本质上还是对象,与java的class(类)是不同的。java的类是不可以直接运行的。js的对象是可以直接调用运行的。
(3)JS如何创建对象?(你有哪些方法)
1、构造函数创建
var Person = new Object();
Person.name = '张三';
Person.age = 20;
Person.sex = '男';
//查看
console.log(Person);
console.log(Person.age);
2、字面量表示法
var Person = {}; //相当于var Person = new Object();
var Person = {
name:'张三',
age:20,
sex:'男',
}
//查看
console.log(Person);
console.log(Person.age);
3、工厂模式创建对象
function Person(name, age, sex) {
var information = new Object();
information.name = name;
information.age = age;
information.sex = sex;
information.sayName = function() {
console.log(this.name);
};
return information;
}
var person1 = Person('张三', 20, '男');
var person2 = Person('李云', 20, '女');
console.log(person1);
console.log(person2);
4、构造函数创建对象
function Person(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
this.sayName = function() {
console.log(this.name);
};
}
var person1 = new Person('张三', 20, '男');
var person2 = new Person('李云', 20, '女');
console.log(person1);
console.log(person2);
5、原型创建对象模式
function Person() {}
Person.prototype.name = '李云';
Person.prototype.age = 20;
Person.prototype.sex = '女';
Person.prototype.sayName = function() {
console.log(this.name);
};
var person1 = new Person();
console.log(person1.name);
6、组合使用构造函数模式和原型模式
(4)JS的构造函数是什么?有什么作用?
定义:在js中,用 new 关键字来调用的函数,称为构造函数。构造函数首字母一般大写
作用:为了让代码重复使用。
构造函数的缺点:就是每个方法都要在每个实例上重新创建一遍,方法指的就是我们在对象里面定义的函数。如果方法的数量很多,就会占用很多不必要的内存。
(5)new关键字是什么?有什么作用?
new关键字与构造函数一起使用以创建对象。
new关键字做了4件事:
- 创建空对象 {}
- 将空对象分配给 this 值
- 将空对象的
proto
指向构造函数的prototype
- 如果没有使用显式return语句,则返回this
(6)构造函数中的this是什么?指向又是什么?
this是指包含它的函数作为方法被调用时所属的对象。
this的四种情况:
- 创建一个新的对象;
- 将构造函数的作用域赋值给新对象(在这里this就指向了这个新对象);
- 执行构造函数中的代码;
- 返回新对象;