javascript中的一些注意点~~更新中

一.prototype原型对象,需要注意的原则是: 

    (1). 使用原型可以大量减少每个对象对内存的需求量,因为对象可以继承许多属性。

      (2). 即使属性在对象被创建之后才被添加至原型中,对象也能够继承这些属性。

示例代码:

 

prototype调用
        <script type="text/javascript">
            
function print(msg)
            {
                document.write(msg,
'<br/>');
            }
            
function printhr()
            {
                document.write(
'<hr/>');
            }
            
            print(
"prototype属性:<br/>"+
                    
"1. 使用原型可以大量减少每个对象对内存的需求量,因为对象可以继承许多属性。<br/>"+
                    
"2. 即使属性在对象被创建之后才被添加至原型中,对象也能够继承这些属性。");
            printhr();
            
            
function User(name)
            {
                
this.name=name;                    
            }
            
var zhang = new User('老张');
            zhang.favchannel 
='hello';
            User.prototype.favchannel
='CCTV';
            Object.prototype.qq 
='569723660';
            print(zhang.favchannel);
            print(zhang.qq);                        
        
</script>

 

 运行结果为:

prototype属性:
1. 使用原型可以大量减少每个对象对内存的需求量,因为对象可以继承许多属性。
2. 即使属性在对象被创建之后才被添加至原型中,对象也能够继承这些属性。


hello
569723660

 

二.setTimeout和setInterval 两个函数都定义在window对象中。setTimeout(fun_name,time_minisec)作用是在time时间后运行fun_name函数一次;setInterval(fun_name,time_minisec)作用是每隔time_sec时间都去运行fun_name函数。

示例代码如下:

代码
<html>
<head></head>
<body>
<div id="show"></div>
<input type="button" value='' id='btntime'></input>
<script type='text/javascript'>
    
function print(msg)
    {
        document.write(msg,
'<br/>');
    }
    
    
var changetime = function()
    {
        
        
var d=new Date();
        
var h=d.getHours();
        
var m=d.getMinutes();
        
var sec=d.getSeconds();
        
var ampm=(h>=12)?'PM':'AM';
        
if(h>12) h-=12;
        
if(h==0)h=12;
        
if(m<10) m='0'+m;
        
var t=h+':'+m+':'+sec+" "+ampm;
        
var button = document.getElementById('btntime');
        button.value 
= "setInterval:"+t;
    }
    changetime();
    setInterval(
"changetime()",1000);
    
    
function time_setTimeOut()
    {
        
var d=new Date();
        
var h=d.getHours();
        
var m=d.getMinutes();
        
var sec=d.getSeconds();
        
var ampm=(h>=12)?'PM':'AM';
        
if(h>12) h-=12;
        
if(h==0)h=12;
        
if(m<10) m='0'+m;
        
var t=h+':'+m+':'+sec+" "+ampm;
        document.getElementById(
'show').innerHTML='setTimeout:'+t;
        setTimeout(
'time_setTimeOut()',1000);
    }
    time_setTimeOut();
        
</script> 
 
</body>
</html>

 三.本地对象,内置对象和宿主对象

1.本地对象包含的内容有 Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError  都是一些 ECMA-262 定义的引用类型。

2.内置对象:由 ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现(ECMA-262定义), 内置对象只有两个Global 和 Math ,它们都是本地对象。内置对象就是一种特殊的本地对象。

3.宿主对象:所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。  

总之,本地对象,就是那些官方定义好了的对象。内置对象是本地对象的一种,其只包含Global对象和Math对象。而宿主对象则是那些官方未定义,你自己构建的对象加上DOM和BOM对象组成的。

 

四.Array.prototype.slice.call(_array,begin[,end]) 的使用相当于_array.slice(begin[,end]),不过Array.prototype.slice.call的效率要远远高过第二种用法。

示例:

  function p(msg)

  {

    document.write(msg,'<br/>');

  }

  p(Array.prototype.slice.call([1,2,3,4],2));
  p([1,2,3,4].slice(2));

 运行结果:

  3,4

  3,4

五.String.prototype.replace 方法的误用--replace方法只能替换第一个匹配项。解决方法是自定义全部替换的方法:

    String.prototype.replaceAll = function(oldstr, replaceWith) {  
        var result = "";    
        if(this.indexOf(oldstr)!=-1){
            result = this.replace(oldstr,replaceWith).replaceAll(oldstr,replaceWith);
         }
         return result==""?this:result;

    }   

posted @ 2010-12-03 13:23  collum  阅读(248)  评论(0编辑  收藏  举报