面向对象:2种
1.ES6之前的面向对象 函数=》new =>类
如:function Da(name){
this.name = name;
console.log(this.name)
}
new Da('ddd')
2.
如:class Dsk {
constructor(){
console.log(1)
}
show(){
console.log(2)
}
}
new Dsx().show()
ReactDOM.render(jsx(组件、内容),放到哪)
面向对象 -
js 两种面向对象
1.es6之前那种 函数 -new 函数 = 类
类 - constructor
原型 - prototype (所谓的方法)
原型链 - __proto__
2.es6=class
constructor - 默认执行的函数
不支持变量提升
class 函数名称
函数调用时 默认执行 constructor 函数
constructor - 里面写一些初始的内容
原型就是 和 constructor 同级的函数即可
继承 extends 可以继承原型和私有属性
如果子类想使用 this
子类constructor 放入super
参数如果想使用 子类参数放入 constructor 和 super 中
jsonp原理
script标签没有跨域的问题 利用src的callback属性提供一个回调函数,函数的参数就是后台的数据 函数必须出现在页面上
创建对象的方式:
对象字面量 : 产生大量重复的代码
2 工厂模式 解决了大量重复的代码
无法解决对象识别:不知道某个对象是由谁创建的
3 构造函数
内部的属性都是写在this关键字下面
调用时需要new关键字
缺点是:构造函数内部的函数,构造函数调用多少次就会创建多少次
优点是可以解决对象识别的问题,可以通过instanceof知道实例是由那个构造函数构造出来的 。
4 原型模式
每一个函数(对象)都有一个原型对象属性(prototype)所有通过这个函数构造出来的实例都会共享原型对象上的属性
5:组合构造函数和原型模式
优点: 解决了大量重复的代码 可以识别实例对象是由那个构造函数构造出来的, 将对象的方法创建在原型对象上面, 每次实例化对象不会创建重复的函数,所有的实例共享同一个原型对象