前端开发面试题之JavaScript(转自公众号)(1)
js基本数据类型:Undefine Number Null Boolean String;
js内置对象:数据封装类对象:object、Array、Boolean、String;
其他:Function、 Arguement、Math、Date、RegExp、Error;
JavaScript的基本代码规范:
对字符串使用单引号;
使用对象字面量代替new Array()这种形式;
绝对不要在一个非函数块李声明一个函数,把那个函数赋给一个变量,浏览器允许你这么做,但是他们解析不同
不要使用全局函数;
总是使用var来声明变量,如果不这么做将导致产生全局变量,我们要避免污染全局命名空间;
switch语句必须有default分支;
语句结束加分好;
for——in循环中的变量应该使用var关键字明确限定作用域,从而避免作用域污染;
避免单个字符名,取名有意义;
驼峰命名规则;
当给事件附加数据时,传入一个哈希而不是原始值,这可以让后面的贡献者加入更多数据到事件数据里,而不用找出并更新那个时间的事件处理器;
JavaScript原型,原型链:每个对象都会在其内部初始化一个属性,就是prototype,当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么就会去prototype找这个属性;这个prototype又会有自己的prototype,于是就这样一直找下去,也就是我们平时所说的原型链;
特点:JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本,当我们修改原型时,与之相关的对象也会继承这一改变;
JavaScript有几种类型的值:栈:原始数据类型;堆:引用数据类型 引用数据类型在栈中存储了指针,该指针指向堆中该实体的首地址,当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中或的实体;
JavaScript实现继承:
(1)构造继承
(2)原型继承
(3)实例继承
(4)拷贝继承
原型prototype机制或apply和call方法实现比较简单,建议使用构造函数与原型混合方式
function parent(){
this.name="song";
}
function child(){
this.age="28";
}
child.prototype=new parent();
var demo=new child();
alert(demo.age+demo.name);
JavaScript创建对象的方式(使用内置对象或自定义对象):
对象字面量:person={name:‘jijie’,age:‘18’};
用function来模拟无参的构造函数
用function模拟带参的构造函数(用this关键字构造上下文属性)
用工厂方式来创建对象
var person=new person();
person.age=19;
person.name="ji";
用原型方式创建
function person(){}
person。prototype.name="ji";
person.protype.age=19;
用混合方式创建
function person(name,age){
this.age=19;
this.name=“ji”}
person。prototype。event=function(){}
eval功能:把对应的字符串解析成js代码并执行,应该避免使用eval不安全,耗性能;
null表示对象被定义了值为空,undefined表示不存在这个值;

浙公网安备 33010602011771号