js高级(一)
对象
一、什么是对象:万物皆为对象
1、对象是单个事物的抽象
2、对象是一个容器,封装了属性和方法
3、对象是无序的
二、面向对象
1、对过程式代码的高度封装,目的提高代码的开发效率和可维护性
2、面向对象不是面向过程的替代,而是面向过程的封装
三:面向对象的特征 (重点)
封装性
继承性
多态性
创建对象(四种方式)
// 1、字面量
let obj = {
}
// 2、new Object()
let obj_1 = new Object()
obj_1.name = 'zs'
console.log(obj_1);
// 3、工厂函数
function car(name) {
let car = new Object()
car.name = name
return car
}
let car_1 = car('小米')
console.log(car_1);
// 4、构造函数
function Car_2(name, color) {
this.name = name
this.color = color
}
let car_3 = new Car_2('小米', '浅紫')
console.log(car_3);
构造函数和实例对象的关系
function Car(name, color) {
this.name = name
this.color = color
}
var car_1 = new Car('小米', '浅紫')
console.log(car_1);
/*
constructor: 构造器;建造者;构造函数
*/
/*
任何对象都有constructor属性,实例化对象的constructor属性指向构造函数 ***
*/
console.log(car_1.constructor);
// Bom对象 Dom对象 自定义对象 内置对象 数组 函数
console.log(history.constructor); // ƒ History() { [native code] }
console.log(document.getElementsByTagName('div')[0].constructor); //f HTMLDivElement() { [native code] }
var obj = {
age: 18
}
console.log(obj.constructor); // Object() { [native code] }
console.log(new Date().constructor); // ƒ Date() { [native code] }
var arr = [1, 2]
console.log(arr.constructor); // ƒ Array() { [native code] }
// 判断数据类型
var num = 10
console.log(num.constructor);
console.log(num.constructor == Number);
var str = '123'
console.log(str.constructor == String);