JS基础(2)|青训营笔记

61 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第7天

本堂课的重点

介绍了js数据类型转换和原型链的一些理解。

1.类型转换

(1)转换成string类型

调用toString()方法:null、undefined无法调用toString()方法

var a = 123;
a = a.toString();
console.log(typeof a);//string

调用String()函数:

var a = 123;
a = String(a);
console.log(typeof a);//string

"+"强制类型转换:

var a = 123a = '' + a;
console.log(typeof a);
(2)转换成number类型

Number()函数

字符串转换为数字: 如果字符串为纯数字,直接转换为数字; 如果字符串中有非数字,则转换为 NaN; 如果字符串是一个空串或者全是空格,则转换为0;

Boolean转换为数字: true:1 false:0

null转换为数字:0

undefined转换为数字:NaN

对象转换为数字:NaN

parseInt()函数:把一个字符串转换为一个整数型 parseFloat()函数:把一个字符串转换为一个浮点型

如果转换类型是null、undefined、boolean,均转换为NaN

字符串转换为数字: 如果字符串中有非数字,并且是以数字开头的,则返回数值部分

var a = '12a12';
a =parseInt(a);
console.log(a);//12
console.log(typeof a);//number

如果字符串中有非数字,并且是以非数字开头的,则返回NaN

var a = 'a12';
a =parseInt(a);
console.log(a);//NaN
console.log(typeof a);//number
(3)转换成Boolean类型

Boolean()

转换为false的情况: 为0的数字 null 空串 undefined false

其余都为true

2.原型链

JS中每个函数都存在有一个原型对象属性prototype,并且所有函数的默认原型都是Object的实例。每个继承父函数的子函数的对象都包含一个内部属性proto。该属性包含一个指针,指向父函数的prototype。若父函数的原型对象的proto属性为再上一层函数,这样就形成了原型链。

prototype(显式)、__proto__(隐式)、constructor
函数.prototype
每一个函数都有一个prototype属性,prototype的属性值是一个对象,这个对象有一个叫做constructor的属性,指向这个函数本身。
​
对象.__proto__
每个对象都有隐藏的属性:__prototype__
对象.__proto__ === 构造这个对象的函数的.prototype
​
函数.__proto__
函数.__proto__ ===Function.prototype
​
函数.prototype.__proto__
函数.prototype.__proto__ ==== Object.prototypeObject.__proto__
Object.__proto__ === Function.prototypeObject.prototype.__proto__
Object.prototype.__proto__  === nullFunction.__proto__
Function.__proto__ === Function.prototypeFunction.prototype.__proto__
Function.prototype.__proto__ === Object.prototype