javascript整理

極經典的JavaScript框架prototype.js中實現繼承的方法

Object.extend = function(destination, source) {
for (var property in source) {
    destination[property] = source[property];
}
return destination;
}

Prototype 對Object類進行的擴展主要通過一個靜態函數Object.extend(destination, source)實現了JavaScript中的繼承。 從語義的角度, Object.extend(destination, source)方法有些不和邏輯, 因爲它事實上僅僅實現了從源對象到目標對象的全息拷貝。不過你也可以這樣認爲:由於目標對象擁有了所有源對象所擁有的特性, 所以看上去就像目標對象繼承了源對象(並加以擴展)一樣。另外, Prototype對Object擴展了幾個比較有用的靜態方法, 所有其他的類可以通過調用這些靜態方法獲取支持。

JScript code

Object.extend = function(destination, source) { // 一個靜態方法表示繼承, 目標對象將擁有源對象的所有屬性和方法
for (var property in source) {
    destination[property] = source[property];   // 利用動態語言的特性, 通過賦值動態添加屬性與方法
}
return destination;   // 返回擴展後的對象
}

Object.extend(Object, {
inspect: function(object) {   // 一個靜態方法, 傳入一個對象, 返回對象的字符串表示
    try {
      if (object == undefined) return 'undefined'; // 處理undefined情況
      if (object == null) return 'null';     // 處理null情況
      // 如果對象定義了inspect方法, 則調用該方法返回, 否則返回對象的toString()值
      return object.inspect ? object.inspect() : object.toString();
    } catch (e) {
      if (e instanceof RangeError) return '...'; // 處理異常情況
      throw e;
    }
},
keys: function(object) {     // 一個靜態方法, 傳入一個對象, 返回該對象中所有的屬性, 構成數組返回
    var keys = [];
    for (var property in object)
      keys.push(property);     // 將每個屬性壓入到一個數組中
    return keys;
},
values: function(object) {   // 一個靜態方法, 傳入一個對象, 返回該對象中所有屬性所對應的值, 構成數組返回
    var values = [];
    for (var property in object) values.push(object[property]); // 將每個屬性的值壓入到一個數組中
    return values;
},
clone: function(object) {    // 一個靜態方法, 傳入一個對象, 克隆一個新對象並返回
    return Object.extend({}, object);
}
});

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/sunjin1988/archive/2009/11/04/4769307.aspx

 

1.求y和z的值是多少?
<script type="text/javascript">
var x = 1;
var y = 0;
var z = 0;
function add(n){n=n+1;}
y = add(x);
function add(n){n=n+3;}
z = add(x);
</script>
都爲undefined,因爲沒有返回值。

2.javascript是面向對象的,怎麼體現javascript的繼承關係?
使用prototype來實現。

8.列舉javaScript的3種主要數據類型,2種複合數據類型和2種特殊數據類型。

主要數據類型:string, boolean, number

複合數據類型:function, object

12.運行的結果?

function hi(){
var a;
alert(a);
}

結果:undefined

navigator

表示瀏覽器的信息及js運行的環境

navigator.cookieEnabled:該屬性表示是否啓用cookie

screen

用於顯示網頁的顯示器的大小和顏色

screen.width/screen.height:表示顯示器的分辨率(總的寬度,高度)

17.javascript的常用對象有哪些?

String, Math, Date和Array對象

當你有一個對象的多個屬性或者方法需要操作時,就可以使用with

比如
<body>
test
<script type="text/javascript">
var o=document.createElement("div");
with(o){
    style.cursor="pointer";
    style.zIndex="100";
    innerHTML="aaaa";
}
document.body.appendChild(o);
</script>
</body>
上面的代碼相當於

<body>
test
<script type="text/javascript">
var o=document.createElement("div");
    o.style.cursor="pointer";
    o.style.zIndex="100";
    o.innerHTML="aaaa";
document.body.appendChild(o);
</script>
</body>

所以with 用於簡化 代碼 操作。 
(2) function f1(){ 
}
1. alert(f1 instanceof Function);//true
2. alert(f1 instanceof Object);//true
3. alert(Function instanceof Object);//true
4. alert(Object instanceof Function);//true
Function 是Object的實例,Object又是Function的實例
Function是函數的構造函數,而Object也是函數,Function自身也是函數
詳細出處參考:http://www.jb51.net/article/23127.htm
5、對Web標準化(或網站重構)知道哪些相關的知識,簡述幾條你知道的Web標準? 
網頁主要由三部分組成:結構(Structure)、表現(Presentation)和行爲(Behavior)。對應的網站標準也分三方面:結構化標準語言,主要包括XHTML和XML;表現標準語言主要包括CSS;行爲標準主要包括對象模型(如W3C DOM)、ECMAScript等。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章