前言
JavaScript总结笔记篇仅是记载本人学习过程中的一些总结,为了梳理一下知识点,督促自己不断加强学习。文中有些是源自官网,有些是搜集资料,有些是个人观点,难免存在某些知识点疏漏或者是有错误的地方,如果错误之处,希望看到的小伙伴能及时提个醒,避免误导其他小伙伴,也希望我的总结能帮助到正在学或者是将要学习JavaScript的小伙伴们!大家一起努力,早日成为IT界的大神!
对象、包装类、原型、原型链
一、对象
(一)对象的创建方法
1.var obj = {}; plainObject 对象字面量
2.构造函数
(1)系统自带的构造函数
new Object() Array() Number()
自定义
(2)构造函数的内部原理
a.在函数体最前面隐式的加上this = {}
b.执行this.xxx = xxx
c.隐式的返回this
3.Object.create
二、包装类
1.new String()
2.new Boolean()
3.new Number()
原始值不能有属性和方法
原始值(栈数据):Number、String、Boolean、undefined、null
引用值(堆数据):array、object、function
undefined、null不能有属性和方法,会报错。
var num = new Number(123);
var str = new String('abc');
/*
num.abc = 123;
访问num.abc // 结果为123
通过new,num、str可以有属性和方法
*/
// 包装类
var num = 123;
num.len = 3;
// 原始值不能有属性和方法,
// 但系统会自动转化成 -- > new Number(123).len = 3; -- > delete
// new Number(123).len -- > undefined
console.log(num.len);
var str = "abc";
str += 1; // str = "abc1"
var test = typeof(str); // test = "string"
if (test.length == 6) {
test.sign = "typeof的返回结果可能为string";
/*
test为原始值,执行test.sign 系统自动转换成
-- > new String(test).sign = "xxxx";
*/
}
console.log(test.sign);
/*
new String(test).sign -- > 结果为undefined
*/
三、原型 Person.prototype
(一)定义
原型是function 对象的一个属性,它定义了构造函数制造出对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象。
(二)利用原型特点和概念,可以提取公有属性
(三)对象如何查看原型 ——> 隐式属性_proto_
(四)对象如何查看对象的构造函数 ——> constructor
四、原型链
(一)如何构成原型链
(二)原型链上属性的增删改查
(三)绝大多数对象的最终都会继承自Object.prototype
除了undefined和null
(四)Object.create(原型/null)
*小技巧:想要实现方法的连续调用,用return this
var xu = {
run : function (){
console.log("cool");
return this;
},
jump : function (){
console.log('jump');
return this;
}
}
xu.run().jump();
五、区分数组和对象的三种方法:
[].constructor //ƒ Array() { [native code] }
var obj = {};
obj.constructor//ƒ Object() { [native code] }
123
[] instanceof Array //true
var obj = {};
obj instanceof Array //false
123
Object.prototype.toString.call([])
//"[object Array]"
Object.prototype.toString.call(123)
//"[object Number]"
Object.prototype.toString.call({})
//"[object Object]"