js面向对象
js基础介绍
- 浏览器端JS由以下三个部分组成:
- ECMAScript: 基础语法
- BOM (浏览器对象模型)
- DOM (文档对象模型)
- ECMAScript又名es,又以下重大版本
- 旧时代 -es10.....es3.1
- 旧时代:
- es5
- es6(es2015)
- es7(es2016) es8(2017)
数据类型
- 基本数据类型: (number,string,boolean,null,undefined)
- 复杂数据类型 - 引用类型: (对象)
- 数据
- 函数
- 正则表达式
- Date
对undefined的正确的理解
var a;
console.log(a) //undefined
var c = undfined;
console.log(c) //undefined
var d = {};
console.log(d.age) //undefined
学习javasrcipt去MDN上面学习很舒服
- 可以作为一个工具书的学习
创建一个对象
var student = {
name:"李白",
grade:"初一",
say:function(){
console.log('nihao')
}
}
对象是键值对的集合:对象是由属性和方法构成的(ps:也有说法为:对象里面皆属性,认为方法也是一个属性)
获取方法
- 可以打点条用调用(但是有一定的局限性)
- 还可以[]使用 这个使用更加广泛些
可以获取 设置 删除(只能删除对象中的属性)
- delete person.gender
- person.age = 123
构造函数
function Person(age,gender){
this.age = age;
this.gender = gender;
}
var p1 = new Person(5,'未知');
var p1 = new Person(5,'未知');
系统自己内置了Object,Date,Array都是内置的构造函数
构造函数的概念
- 如何函数都可以当成构造函数
function CreateFunc(){} - 只要new出来的是构造函数的调用 -new CreateFunc() 此时CreateFunc是一个构造函数 -CreateFunc() 此时CreateFunc并不是构造函数
构造函数的执行过程
var p1 = new PErson()- 创建一个内部对象,'this'指向该实例
- 返回值:
- 如果函数没有返回值(没有return语句);那么构造函数返回的是p1实例
function fn3(){
return [1,3,5];
}
//数组是个对象类型的值
//本次构造函数返回的就是数组
//返回的是[1,3,5]
如何知道一个数据是不是复杂类型
- 怎么看是不是复杂类型;数字.字符串.布尔值.null.undefined
- 如果不是上面的数据类型的话,那基本上就是复杂类型
string() 和 new String()
- 第1 是字符串类型 第2 就是对象了
怎么判断这个是不是构造函数的实例
function Person(){
}
var p1 = new Person()
console.log(p1 instanceof Person)
// 这个构造函数的实例就是Person
function Person1(){
return [1,3,5];
}
var p2 = new Person1()
console.log(p2 instanceof Array)
// 该构造函数的实例就是Array
在每个构造函数都有
***.__proto__属性,里面有constructor属性就能看到该函数的实例
typeof运算符,只能判断:数字.字符串.布尔值.undefined.函数
###js中继承概念
- 通过某种方式让一个对象可以访问到另一个对象中的属性和方法,我们把这种方式称之为继承
解决办法
// 只要把say方法卸载Person.prototype中,那么say方法就是用一个方法
Person.prototype.run = function(){
console.log('我很帅');
}
那么p1.run()和p1.run()就是相等的
可以节约内存
原型链简单实用
function Dog(){
}
var p1 = new Dog()
Dog.prototype.say = function(){
console.log("哇哇哇")
}
原型链的复杂用法
Dog.prototype = {
a1:function(){
console.log('aaa')
} ,
a2:function(){
console.log('bbb')
}
}
//在后面创建Dog实例
var p1 = new Dog()
console.log(p1.a1())