胖在一方

出得厅堂入得厨房的胖子

导航

Javascript(七) 运算符

Posted on 2008-02-14 17:05  胖在一方  阅读(332)  评论(0)    收藏  举报
    typeof 运算符
        typeof 运算符把类型信息当作字符串返回。typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "undefined."
    
    undefined类 - 如果变量是 undefined类型
    string - 如果变量是string类型
    number - 如果变量是number类型
    boolean - 如果变量是boolean类型
    function - 如果变量是一个vfunction
    object - 如果变量是null 或者是一个对象。 
       
    
var tmp;

alert(
typeof(tmp)); //output undefined

tmp 
= "string";
alert(
typeof(tmp));  //output string 

tmp
=10;
alert(
typeof(tmp)); //output number;

tmp
=false;
alert(
typeof(tmp)); //output boolean;

tmp 
= null;
alert(
typeof(tmp)); //output object;

tmp 
=function a(){};
alert(
typeof(tmp)); //output function 

    为什么typeof运算符对于null会返回"object" ,这实际上是javascript最初实现的一个错误,然后被ECMAScript沿用了,现在,null被认为是对象的占位符,从而解释了这么一个矛盾。但是从技术上说,他仍然是原始值。(书上解释的 @_@)

    instanceof 运算符
        返回一个 Boolean 值,指出对象是否是特定类的一个实例。
    
function objTest(obj)
{
   
var i, t, s = "";   // 创建变量。
   t = new Array();   // 创建一个数组。
   t["Date"= Date;   // 填充数组。
   t["Object"= Object;
   t[
"Array"= Array;
      
for (i in t)
      {
         
if (obj instanceof t[i])   // 检查 obj 的类。
         {
            s 
+= "obj is an instance of " + i + "<br>";
         }
         
else 
         {
            s 
+= "obj is not an instance of " + i + "<br>";
         }
   }
   
return(s);   // 返回字符串。
}

var obj = new Date();
document.write(objTest(obj));
obj is an instance of Date
obj is an instance of Object
obj is not an instance of Array
    

    delete运算符
    从对象中删除一个属性,或从数组中删除一个元素
    
            var obj = new Object();
            obj.name
="abc";
            alert(obj.name); 
//outputs "abc"
            delete obj.name;
            alert(obj.name); 
//outputs "defined"
            
            
//delete运算符不能删除开发者为定义的属性和方法,例如下面的方法会引发错误
            
            
var obj = new Object();
            
delete obj.toString();  //cause error

    用delete运算符删除数组的对象,只是会把数组中的内容变成 undefined ,但是不会减少数组的长度
    
var myArray = new Array();
myArray[
0]="a";
myArray[
1]="b";
myArray[
2]="c";
myArray[
3]="d";
myArray[
4]="e";
myArray[
5]="f";

alert(myArray[
0]); //output a
alert(myArray.length); //output 6
delete myArray[0];
alert(myArray[
0]); //output undefined
alert(myArray.length); //output 6

     void运算符号
    void 运算符对任何值都返回undefined.该运算符通常用于避免输出不应该输出的值,例如从HTML的<a>元素调用javascrip函数时,要正确做到这一点,函数不能有返回值。
   
<a href="javascript:window.open('about:blank');" target =_blank>aa</a>

    这个会出现2个窗口,一个窗口显示[object],一个显示空白页。
    这个是因为 window.open 返回对新窗口的引用,然后该对象被转换成要显示的字符串。 
    要避免这个结果可以用 void运算符
    
<a href="javascript:void(window.open('about:blank'));" >bb</a><br>

    这使window.open的返回值变成 undefined,他不是有效值,不会显示在游览器当中。
    没有返回值的function 真正返回的都是undefined