js面向对象
1.什么是对象
对象就是无序的键值对儿的集合。
JavaScript中 万物皆对象。
凡是对象都有自己的属性和方法。
所有的对象都是可以new
凡是通过new 关键字得出的对象都叫做实例对象。
var str = new String("abcde");
var num1 = new Number("123")
2 創建對象的方法
1.字面量
2.new Object()
3.自定義構造函數
4.Object.create() es2015新增方法
5.工厂函数
3 工廠函數:批量生產對象
栗子:function createStudent(name,age,className) {
var obj = new Object();
obj.name = name;
obj.age = age;
obj.className = className;
obj.study = function () {
console.log("學習Css")
}
return obj;
}
优点:直接调用 可以生成对象 createStudent()
工廠函數的弊端:每次調用工廠函數,都在內存中開闢空間
所有的函數也同樣重新生成,導致內存浪費。
4.自定义构造函数的由来
工廠函數有內存浪費的問題,為了解決內存浪費的問題,就有了自定義構造函數。
5.自定義构造函数 :作用就批量生產對象
規定:首字母大寫
function Dog(name,age,color){
this.name = name;
this.age = age;
this.color = color;
this.say = function(){
console.log("hello")
}
}
var damao = new Dog("大毛",12,"yelow")
new 自定義構造函數
內存中發生了什麼事情?
1.在内存中开辟空间创建了一个新的对象。this就指向了这个对象。
2.把构造函数中所有的属性和方法,全都复制一份给了新的对象
3.每个构造函数都有原型对象,新的对像也继承了所有原型对象
中的属性和方法。
自定义构造函数,优点是,避免每次创建对象,都在内存中开辟空间
生成同样的函数。节省内存。
6.常用的内置对象 也就構造函數 内置内
Number String Boolean
Array Date Math RegExp
Function Object
Global Error
7.什么是面向对象
面向对象是一个思想,就是把解决问题的注意力集中到对象上。
面向对象有三大特点 :封装 继承 多态
封装:把所有相关的属性和方法封装在一个对象里。
继承:自己没有的属性或者方法,把别人的拿来用。
多态:不同的对象根据事件情况,执行代码不同。
js可以模拟实现。arguments。
8.原型对象
把相同的属性和方法写在构造函数的原型对象里。
构造函数的实例对象 new 出来的实例就全部可以访问。
原型对象存在的最大作用就是节省内存空间
9.原型链
***原型链:由各级对象的__proto__逐级继承形成的关系
原型链的作用也是节省空间。
实现:
1建立一个基础对象的构造函数,再建立一个继承对象的构造函数,
2然后用prototype实现对象的继承。
原型继承
10.模拟继承 call apply bind
模拟继承实际上就是执行了一个函数,把this执行改变成了当前构造函数的实例对象
并没有节省内存空间。
栗子
function Person(name,age) {
this.name = name;
this.age = age;
}
Person.prototype = {
say : function () {
console.log("hello,I'm" + this.name)
}
}
浙公网安备 33010602011771号