包装类
创建基本包装类型之后,JS中的基本类型值可以被当作对象来访问。但是undefined,null没有。
var num = new Number(123);
var str = new String('abc');
var bol = new Boolean(true);
var obj = new Object();
var unde = new Undefined(); 错误写法!!!
var nul = new Null(); 错误写法!!!
区分的例子
var num = 4;
num.len = 3;
//new Number(4).Len = 3; delete
//
//new Number(4) len
console.log (num.len) ; //返回undefined
结果:undefined
var str = "abc";
str += 1;
var test = typeof(str); //test = "string"
if(test.length == 6) {
test.sign = "typeof的返回结果可能为String";
//原始值不能附属性,调用包装类
//new String(test).sign = "typeof的返回结果可能为String"; delete
}
//重新 new String(test).sign
console.log(test. sign);
结果:undefined
// 2.分析下面的JavaScript代码段:
function employee (name,code) {
this. name="wangli";
this.code=" A001";
}
var newemp = new employee (" zhangming", ' A002' ) ;
document. write("雇员姓名:"+ newemp. name+ "<br>" ) ;
document. write("雇员代号:"+ newemp.code +"<br>") ;
// 输出的结果是().(选择一项)
// A.雇员姓名:wangli雇员代码:A001
// B.雇员姓名: zhangming雇员代码: A002
// C.雇员姓名: nul,雇员代码: null
// D.代码有错误无输出结果
分析:虽然传入了参数,但是我们的构造函数内部是已经确定的值了,没有使用实际参数。
题目3
function Person (name, age , sex) {
var a=0;
this. name = name;
this.age = age;
this.sex = sex;
function sss() {
a++;
document.write(a);
}
this.say = sss;
}
var oPerson = new Person() ;
oPerson. say() ;
oPerson.say() ;
var oPerson1 = new Person( ) ;
oPerson1. say() ;
输出:1 2 3
题目4
var x=1,y=z=0;
function add(n) {
return n=n+1;
}
y = add(x);
function add(n) {
return n=n+3;
}
z = add(x);
console.log(x,y,z)
输出:1 4 4
分析:预编译!函数和变量声明会被提升,所以在后面执行的时候本质上调用的是后面的add()函数。