-
var Object=new Object(3);
⟶ \longrightarrow ⟶Number { 3 }
var obj =[];
⟶ \longrightarrow ⟶Array []
var Object =new Object(3)(4);
⟶ \longrightarrow ⟶TypeError: (new Object(…)) is not a function
var Object =new Object('3','4');
⟶ \longrightarrow ⟶String { “3” } -
var a =1;
console.log(a[1]);
⟶ \longrightarrow ⟶undefined
console.log(a[a]);
⟶ \longrightarrow ⟶undefined
console.log(a[b]);
⟶ \longrightarrow ⟶ReferenceError: b is not defined
console.log(1);
⟶ \longrightarrow ⟶ 1 -
null
和undefined
的区别null
相当于一个空的对象,undefined
相当与一个空的变量null == undefined
⟶ \longrightarrow ⟶true
ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。null === undefined
⟶ \longrightarrow ⟶false
null
的类型是Object
,undefined
的类型是undefined
,所以他们类型不等
-
javaScript 数据类型
-
基本数据类型:
String、Number、Boolean、Undefined、Null 、Symbol
-
引用数据类型:
Object
:Array、Function、RegExp、Date
-
特殊的引用类型(基本包装类型):
Boolean、Number 、String
-
-
原型链与继承
- 原型链
JavaScript中所有的对象都是由它的原型对象继承而来。而原型对象自身也是一个对象,它也有自己的原型对象,这样层层上溯,就形成了一个类似链表的结构,这就是原型链
所有原型链的终点都是Object函数的prototype属性。Object.prototype指向的原型对象同样拥有原型,不过它的原型是null,而null则没有原型 - 继承
- 原型链继承
- 借用构造函数(经典继承)
- 组合继承
- 原型式继承
- 寄生式继承
- 寄生组合式继承
- 原型链
-
多次bind绑定只有第一次生效
var one = function(){ console.log(this.x); } var two = { x: 1 } var three = { x: 2 } var fn = one.bind(two).bind(three); fn(); //1 var four = { x: 3 } var fn = one.bind(two).bind(three).bind(four); fn(); //1
-
多次bind重写(迅雷前端笔试题)
var self = null Function.prototype.bind = function() { if (self == null){ self = this } var context = [].shift.call(arguments), args = [].slice.call(arguments); return function() { return self.apply(context, [].concat.call(args, [].slice.call(arguments))); } };
Function.prototype.bind = function () { var self = this.self || this, context = [].shift.call(arguments), args = [].slice.call(arguments), res = function () { return self.apply(context, [].concat.call(args, [].slice.call(arguments))); } res.self = this return res };
-
同源策略
同源策略是一种约定,它是浏览器最核心和最基本的安全功能,可以用于隔离潜在恶意文件,如果没有了同源策略,浏览器的正常使用将受到影响。
浏览器采用同源策略,禁止页面加载或执行与自身不同源的任何脚本。如果没有同源策略,那么恶意网页可以读取银行网站、网上商城等里面的用户信息,甚至篡改账号密码等。所以所有支持JavaScript的浏览器都采用了同源策略。
同源:协议、域名(主机)、端口相同。只要有一个不同就称之为跨域。出现跨域浏览器就要报错。 -
var a = 0, b=0, c=0; for (var i = 1;i <= 3; i++) { var i2 = i; (function() { var i3 = i; setTimeout(function() { a += i; b += i2; c += i3; }, 1) })(); } setTimeout(function() { console.log(a, b, c); }, 100) 答案:12 9 6
其他面试题请参考:前端面试题 – JavaScript (一)