赞
踩
基本数据类型(值类型)
对象(引用类型)
typeof
instanceof
===
什么是实例?
实例就是实例对象 构造函数是类型对象 根据类型创建实例对象
// 实例 实例对象
// 类型 类型对象
function Person(name, age) { //构造函数 类型
this.name = name;
this.age = age;
}
var p = new Person("ycj", 11); // 根据类型创建的实例对象
console.log(p);
面试题
undefined和null的区别?
undefined代表定义了没有赋值 null代表定义了也赋值了 赋值为null
什么时候给变量赋值为null?
初始赋值为null,表明将要赋值为null,确定了对象再赋值
在最后设置b = null,为了让对象成为垃圾对象(被垃圾回收器回收)
严格区别变量类型与数据类型?
数据的类型
* 基本类型
* 对象类型
变量的类型(变量内存值的类型)
* 基本类型:保存的基本类型数据
* 引用类型:保存的是地址值
思考:
* xxx是基本数据,保存的就是这个数据
* xxx是对象,保存的是对象的地址值
* xxx是一个变量,保存的是xxx的内存内容(可能是基本数据,也可能是地址值)
立即执行函数 匿名函数自调用 用来编写js模块
把一个函数整体用()括起来,看作是一个匿名函数,然后立即调用
(function () {
var a = 3;
console.log(a+3);
})(); // 6
为什么要用IIFE?
隐藏实现,隐藏函数的具体实现,只返回一个结果
不会污染外部(全局)命名空间
<script>
// 创建一个函数
function Fn() { // 内部语句:this.prototype = {}
}
console.log(Fn.prototype); //显式原型
var fn = new Fn(); //this.__proto = Fn.prototype
console.log(fn.__proto__);
console.log(Fn.prototype === fn.__proto__); //true
</script>
访问一个对象的属性时
先在自身属性中查找,找到返回
如果没有找到,再沿着__proto__这条链向上查找,找到返回
如果最终没有找到,返回undefined
别名:隐式原型链
作用:查找对象的属性(方法)
构造函数/原型/实体对象的关系
函数的显式原型指向的对象,默认是空Object实例对象(但Object不满足)
所有函数都是Function的实例(包括它本身)
Object的原型对象是原型链的尽头
原型面试题
function A() {}
A.prototype.n = 1;
var b = new A();
A.prototype = {
n: 2,
m: 3,
};
var c = new A();
console.log(b.n, b.m, c.n, c.m); //1,undefined,2,3
var F = function () {};
Object.prototype.a = function () {
console.log("a");
};
Function.prototype.b = function () {
console.log("b");
};
var f = new F();
f.a(); //a
// f.b(); //f.b is not a function
F.a(); //a
F.b(); //b
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。