-
1.面向对象的三大特性是什么,请分别说明?
- 01 封装:
使用对象来封装函数和变量,对外提供对应的接口。
提供提高代码的复用性,降低代码的冗余度。
信息隐藏,把方法内部的实现隐藏起来,我们不需要关心内部的实现细节。
- 02 继承:
某个对象(子对象)获得另外一个对象(父对象)的属性和方法的行为。
- 03 多态:
对于相同的操作(指令),不同的对象表现出不同的行为。
- 2.为什么要使用面向对象编程,有哪些优点?
- 在更多的时候会更方便,复用性更高。
- 3.构造函数和原型对象的关系是什么?
- 01 构造函数默认有一个相互关联(prototype<->constructor)的对象,这个对象是原型对象。
- 02 原型对象本身是一个对象(Object),只有一个属性。
- 4.说明自定义构造函数创建对象的执行过程?
1 提供一个构造函数
function Person() {
//var o = new Object();
//this = o;
// o.__proto__ = Person.prototype;
//o.__proto__.constructor = Person;
2 在函数内部通过this设置属性和方法
this.name = "张三";
this.showName = function () {
console.log(this.name);
}
//return o;
}
3 通过new 函数()创建对象
var p1 = new Person();
- 1 提供构造函数
- 2 通过this来设置属性和方法
1 创建空的对象var o = {}
2 把空对象赋值给this
3 设置原型对象 o.__proto__ = Person.Prototype
4 设置原型对象的构造器属性o.__proto__.constructor = Person
添加实例属性
5 使用this来设置成员
6 把对象返回
如果显示return: 值类型(默认创建的对象) + 引用类型(对象会被覆盖)
- 3 使用new来调用构造函数
- 5.面向对象和面向过程编程有什么区别?
- 面向过程编程关注解决问题的具体步骤。
- 面向对象编程关注解决问题需要的对象。
- 6.构造函数的原型对象的作用是什么?
- 原型对象的成员会被构造函数创建出来的所有对象共享。
- 7.如何获取构造函数的原型对象[3]?
构造函数.prototype
对象.__proto__
Object.getPrototypeOf(对象)
- 8.说明实例和实例化
- 实例化:构造函数创建对象的过程
- 实例:构造函数创建出来的对象,这个对象被称为该构造函数的一个实例。
- 9. 请画出下面代码的结构关系图(包含proto和constructor)
function Book (name,price,author,press) {
this.name = name;
this.price = price;
this.author = author;
this.press = press;
}
Book.prototype.typeName = "书籍";
Book.prototype.sellAddress = ["新华书店","京东商城","卓越亚马逊"];
Book.prototype.read = function () {
console.log("我的书名为:"+this.name+",作者为"+this.author+"....");
};
var b1 = new Book("声名狼藉者的的生活","42.00","福柯","北京大学出版社");
var b2 = new Book("人性的枷锁","49.00","毛姆","华东师范大学出版社");
网友评论