極經典的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等。