<html>
<HEAD>
<SCRIPT LANGUAGE= "JavaScript">
function log(argtext){
document.writeln(argtext);
}
log('<pre>');
log('1 instanceof Number :'+(1 instanceof Number));
log('1.0.constructor :'+((1.0.constructor) == Number));
var temp="a string for test";
//下面这句返回"string"
log( typeof temp);
//下面这句返回"false"
log(temp instanceof String);
//下面这句就回返"true"了
var temp2=new String("another new string");
log(temp2 instanceof String);
//constructor属性是很好的替代品
//下面这句返回"true"
log(temp.constructor==String);
log('****************************');
log("Boolean 的陷阱:");
var bObject = new Boolean(false);
log('var bObject = new Boolean(false);');
log('true && bObject=' + (true && bObject));
log('bObject && true=' + (bObject && true));
log('bObject.prototype='+bObject.prototype);
log('bObject.constructor='+bObject.constructor);
log('typeof bObject='+typeof bObject);
log('bObject instanceof Boolean='+(bObject instanceof Boolean));
log('bObject instanceof Object='+(bObject instanceof Object));
log('****************************');
var s=1897.005;
log('var s=1897.005;');
log('s.toFixed(2)='+s.toFixed(2));
log('s.toExponential(5)='+s.toExponential(5));
log('s.toPrecision(5)='+s.toPrecision(5));
log('1.constructor 会出错,但1.0.constructor或1..constructor就可以执行,所以说javascript还是挺笨的,一定要把1后面第一个小数点后的东西拼成数值后才能当对象用.\n 1.0.constructor='+(1.0.constructor));
log('****************************');
var text="看a";
log('text="看a"');
log('text.length = ' + text.length);
log('text.charAt(0) = ' + text.charAt(0));
log('text.charCodeAt(0).toString(16) = ' + text.charCodeAt(0).toString(16));
log('****************************');
log("void运算符,使语句返回undefined");
log("void(function(){return 1}()) "+void(function(){return 1}()) );
log('没有返回值的函数真正返回的都是undefined');
log('****************************');
log('"23">3 =' + ('23'>3));
log('"a">3 =' + ('a'>3));
log('"a"<=3 =' +( 'a'<=3));
log('任何包含NaN的关系运算都要返回false');
log('****************************');
log('判断两个变量是否相等是程序设计中非常重要的运算。\n在处理原始值时,这种运算相当简单,但涉及对象,任务就稍有点复杂。\nECMAScript提供了两套运算符处理这个问题,等号和非等号用于处理原始值,全等号和非全等号用于处理对象。')
log('全等号和非全等号进行比较时,不进行任何类型转换');
log('只有字符串和数值相加时,才将数值转换为字符串,其他运算符中除了全等"===",进行字符串和数字的运算时,都是将字符串转为数字');
log('****************************');
log('对象冒充继承 和 原型链继承');
function ClassA(){
this.color='red';
}
ClassA.prototype.sayName=function(){
log("ClassA");
}
function ClassB(){
this.sayColor=function(){log(this.constructor);}
}
ClassB.prototype=new ClassA();
ClassB.prototype.sayName=function(){
log("ClassB");
}
ClassB.prototype.color='bbbbbb';
var b=new ClassB();
log(ClassB.prototype);
b.sayName();
log(ClassB.prototype.color);
b.color='bbbb';
ClassB.prototype.color='bbbbbb';
b.sayColor();
log(ClassB.prototype.color);
function ClassC(){
ClassA.call(this,arguments);
}
var c=new ClassC();
log(c.color);
log('</pre>');
</SCRIPT>
</HEAD>
<BODY>
13:33 2008-10-7
</BODY>
</HTML>
javascript高级程序设计 读书 随笔
最新推荐文章于 2022-02-25 20:00:37 发布