- element.insertAdjacentHTML(position, text);
- 可以读取字符串里面的标签
创建对象方式
- 字面量创建
- 构造函数 new Object()
- 自定义构造函数
1、构造函数和原型
- 声明式函数的使用方式不同决定其为构造函数还是普通函数
- 通过 new 来使用的声明式函数式构造函数
- new在执行时做的四件事
- 在内存中创建一个新的空对象。
- 让this指向这个新的对象。
- 执行构造函数里面的代码,给这个新对象添加属性和方法。
- 返回这个新对象(所以构造函数里面不需要return)。
2、构造函数和原型
-
构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量变量赋初始值,它总与new一起用。
new在执行时做的4件事情
-
- 在内存空间开辟一片空间
- 让this指向这个空间
- 执行构造函数里面的代码,给新对象添加属性和方法
- 返回这个对象
-
3、构造函数原型对象 prototype
- 原型对象就是一个属性,是构造函数的属性,prototype也称为原型对象
- 作用:共享方法,节省内存
4、对象原型 proto
- 只读属性
每一个对象都有一个原型,作用是指向原型对象prototype
5、constructor构造函数
主要作用可以指回原来的构造函数
// 使用对象方式添加方法要 // 给设置一个指路的不然就都覆盖了,找不到构造函数了
6、原型链
作用:提供一个成员查找机制,或查找规则
每一个构造函数都有一个属性叫原型对象,在原型对象里放方法,new 构造函数可以生成一个实例对象,实例对象都有原型,可以指向构造函数的原型对象,原型对象可以通过constructor指向构造函数,同时原型对象还可以通过原型找到上一级的原型对象,最大的是Object的原型对象,再往上找就是null
当访问一个对象的属性(包括方法)时,首先查找这个对象自身有没有该属性。
如果没有就查找它的原型(也就是__proto__指向的prototype 原型对象)。
如果还没有就查找原型对象的原型(Object的原型对象)。
依此类推一直找到Object 为止(null)。
__proto__对象原型的意义就在于为对象成员查找机制提供一个方向,或者说一条路线。
7、扩展内置对象
可以通过原型对象,对原来的内置对象进行扩展自定义的方法。比如给数组增加自定义求偶数和的功能。
- 数组求和
- 求最大值
- 最小值
var arr = [1, 2, 3];
var arr1 = [23, 2, 5];
Array.prototype.sum = function (arr) {
var sum = 0;
arr.forEach(function (element, index) {
sum += element;
});
return sum;
};
console.log(arr.sum);
console.log(arr.sum(arr));
console.log(arr1.sum(arr1));
console.log(Array.prototype);
8、继承
ES6之前并没有给我们提供extends 继承。我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承。
属性继承
function Father(uname, age) { this.uname = uname; this.age = age; } function Son(uname, age, score) { Father.call(this, uname, age); this.score = score; } var obj = new Son('son', 18, 99); console.log(obj) console.log(obj.score); console.log(obj.uname);
call()
- 调用这个函数, 并且修改函数运行时的this 指向
fun.call(thisArg, arg1, arg2, ...);
call把父类的this指向子类
thisArg :当前调用函数this 的指向对象
arg1,arg2:传递的其他参数