導航:首頁 > 編程語言 > js擴展對象

js擴展對象

發布時間:2024-09-08 03:27:06

js 中 Event.observe()和Object.extend()函數的作用和用法,請高手幫幫我,謝啦

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) { // 一個靜態方法, 傳入一個對象, 克隆一個新對象並返回
returnObject.extend({}, object);
}
});

② js除了有JQuery框架以外,還有哪些強大點的框架,或者比較實用的也可以。。誰能給我介紹一下

  1. Zepto.js描述:Zepto是一個輕量級的針對現代高級瀏覽器的JavaScript庫,它與jquery有著類似的api。 如果你會用jquery,那麼你也會用zepto。關於Zepto認知我也是通過與一位騰訊朋友聊天的時候知道的,只作了些基礎的了解。


2.SUI Mobile

描述:SUI Mobile 是一套基於Framework7開發的UI庫。它非常輕量、精美,只需要引入我們的CDN文件就可以使用,並且能兼容到 iOS 6.0+ 和 Android 4.0+,非常適合開發跨平台Web App。

用途:你也看到了,他是用於無線端的Web App的開發。

3.Node.Js

描述:Node.js是一個Javascript運行環境(runtime)。實際上它是對Google V8引擎進行了封裝。V8引 擎執行Javascript的速度非常快,性能非常好。Node.js對一些特殊用例進行了優化,提供了替代的API,使得V8在非瀏覽器環境下運行得更好。

Node.js是一個基於Chrome JavaScript運行時建立的平台, 用於方便地搭建響應速度快、易於擴展的網路應用。Node.js 使用事件驅動, 非阻塞I/O模型而得以輕量和高效,非常適合在分布式設備上運行數據密集型的實時應用。

簡單的說 Node.js 就是運行在服務端的 JavaScript。

Node.js 是一個基於Chrome JavaScript 運行時建立的一個平台。

Node.js是一個事件驅動I/O服務端JavaScript環境,基於Google的V8引擎,V8引擎執行Javascript的速度非常快,性能非常好。

用途:

1. RESTful API

這是NodeJS最理想的應用場景,可以處理數萬條連接,本身沒有太多的邏輯,只需要請求API,組織數據進行返回即可。它本質上只是從某個資料庫中查找一些值並將它們組成一個響應。由於響應是少量文本,入站請求也是少量的文本,因此流量不高,一台機器甚至也可以處理最繁忙的公司的API需求。

2. 統一Web應用的UI層

目前MVC的架構,在某種意義上來說,Web開發有兩個UI層,一個是在瀏覽器裡面我們最終看到的,另一個在server端,負責生成和拼接頁面。

不討論這種架構是好是壞,但是有另外一種實踐,面向服務的架構,更好的做前後端的依賴分離。如果所有的關鍵業務邏輯都封裝成REST調用,就意味著在上層只需要考慮如何用這些REST介面構建具體的應用。那些後端程序員們根本不操心具體數據是如何從一個頁面傳遞到另一個頁面的,他們也不用管用戶數據更新是通過Ajax非同步獲取的還是通過刷新頁面。

3. 大量Ajax請求的應用

例如個性化應用,每個用戶看到的頁面都不一樣,緩存失效,需要在頁面載入的時候發起Ajax請求,NodeJS能響應大量的並發請求。總而言之,NodeJS適合運用在高並發、I/O密集、少量業務邏輯的場景。

4.angular.Js

描述:AngularJS[1]誕生於2009年,由Misko Hevery 等人創建,後為Google所收購。是一款優秀的前端JS框架,已經被用於Google的多款產品當中。AngularJS有著諸多特性,最為核心的是:MVVM、模塊化、自動化雙向數據綁定、語義化標簽、依賴注入等等。

用途:通過描述我們應該就能很好的明白AngularJS的真實用途了,MVVM,模塊化,自動化雙向數據綁定等等。除了簡單的dom操作外,更能體現Js編程的強大。當然應用應該視場合而定。

5.JQuery Mobile

描述:Query Mobile是jQuery在手機上和平板設備上的版本。jQuery Mobile 不僅會給主流移動平台帶來jQuery核心庫,而且會發布一個完整統一的jQuery移動UI框架。支持全球主流的移動平台。jQuery Mobile開發團隊說:能開發這個項目,我們非常興奮。移動Web太需要一個跨瀏覽器的框架,讓開發人員開發出真正的移動Web網站

用途:jQuery Mobile 是創建移動 web 應用程序的框架。

jQuery Mobile 適用於所有流行的智能手機和平板電腦。

jQuery Mobile 使用 HTML5 和 CSS3 通過盡可能少的腳本對頁面進行布局。

6.requirejs

描述:RequireJS的目標是鼓勵代碼的模塊化,它使用了不同於傳統<script>標簽的腳本載入步驟。可以用它來加速、優化代碼,但其主要目的還是為了代碼的模塊化。它鼓勵在使用腳本時以mole ID替代URL地址。

RequireJS以一個相對於baseUrl的地址來載入所有的代碼。 頁面頂層<script>標簽含有一個特殊的屬性data-main,require.js使用它來啟動腳本載入過程,而baseUrl一般設置到與該屬性相一致的目錄。

用途:模塊化動態載入。

7.Vue.js

描述:Vue.js 是用於構建互動式的 Web 界面的庫。它提供了MVVM數據綁定和一個可組合的組件系統,具有簡單、靈活的 API。從技術上講, Vue.js 集中在MVVM模式上的視圖模型層,並通過雙向數據綁定連接視圖和模型。實際的 DOM 操作和輸出格式被抽象出來成指令和過濾器。相比其它的 MVVM 框架,Vue.js 更容易上手。

8.backbone.js

描述:Backbone為復雜Javascript應用程序提供模型(models)、集合(collections)、視圖(views)的結構。其中模型用於綁定鍵值數據和自定義事件;集合附有可枚舉函數的豐富API; 視圖可以聲明事件處理函數,並通過RESTful JSON介面連接到應用程序。

9.React

描述:React 是一個 Facebook 和 Instagram 用來創建用戶界面的 JavaScript 庫。很多人認為 React 是MVC中的V(視圖)。我們創造 React 是為了解決一個問題:構建隨著時間數據不斷變化的大規模應用程序。為了達到這個目標,React 採用下面兩個主要的思想。

10.Ionic

描述:Ionic既是一個CSS框架也是一個Javascript UI庫。許多組件需要Javascript才能產生神奇的效果,盡管通常組件不需要編碼,通過框架擴展可以很容易地使用,比如我們的AngularIonic擴展。

Ionic遵循視圖控制模式,通俗的理解和 Cocoa 觸摸框架相似。在視圖控制模式中,我們將界面的不同部分分為子視圖或包含其他視圖的子視圖控制器。然後視圖控制器「驅動」內部視圖來提供交互和UI功能。一個很好的例子就是標簽欄(Tab Bar)視圖控制器處理點擊標簽欄在一系列可視化面板間切換。

瀏覽我們的API文檔來了解視圖控制器和Ionic中可用的Javascript實用工具

Ionic 是目前最有潛力的一款 HTML5 手機應用開發框架。通過 SASS 構建應用程序,它 提供了很多 UI 組件來幫助開發者開發強大的應用。 它使用 JavaScript MVVM 框架和 AngularJS 來增強應用。提供數據的雙向綁定,使用它成為 Web 和移動開發者的共同選擇。

③ 如何編寫 Node.js 擴展

一、編寫Node.js原生擴展

Node.js是一個強大的平台,理想狀態下一切都都可以用javascript寫成。然而,你可能還會用到許多遺留的庫和系統,這樣的話使用c++編寫Node.JS擴展會是一個不錯的注意。

以下所有例子的源代碼可在node擴展示例中找到 。

編寫Node.js C + +擴展很大程度上就像是寫V8的擴展; Node.js增加了一些介面,但大部分時間你都是在使原始的V8數據類型和方法,為了理解以下的代碼,你必須首先閱讀V8引擎嵌入指南。

Javascript版本的Hello World

在講解C++版本的例子之前,先讓我們來看看在Node.js中用Javascript編寫的等價模塊是什麼樣子。這是一個最簡單的Hello World,也不是通過HTTP,但它展示了node模塊的結構,而其介面也和大多數C++擴展要提供的介面差不多:

HelloWorldJs = function() {

this.m_count = 0;

};

HelloWorldJs.prototype.hello = function()

{

this.m_count++;

return 「Hello World」;

};

exports.HelloWorldJs = HelloWorldJs;

正如你所看到的,它使用prototype為HelloWorldJs類創建了一個新的方法。請注意,上述代碼通過將HelloWorldJS添加到exports變數來暴露構造函數。

要在其他地方使用該模塊,請使用如下代碼:

var helloworld = require(『helloworld_js』);

var hi = new helloworld.HelloWorldJs();

console.log(hi.hello()); // prints 「Hello World」 to stdout

C++版本的Hello World

要開始編寫C++擴展,首先要能夠編譯Node.js(請注意,我們使用的是Node.js 2.0版本)。本文所講內容應該兼容所有未來的0.2.x版本。一旦編譯安裝完node,編譯模塊就不在需要額外的東西了。

完整的源代碼可以在這里找到 。在使用Node.js或V8之前,我們需要包括相關的頭文件:

#include <v8.h>

#include <node.h>

using namespace node;

using namespace v8;

在本例子中我直接使用了V8和node的命名空間,使代碼更易於閱讀。雖然這種用法和谷歌的自己的C++編程風格指南相悖,但由於你需要不停的使用V8定義的類型,所以目前為止的大多數node的擴展仍然使用了V8的命名空間。

接下來,聲明HelloWorld類。它繼承自node::ObjectWrap類 ,這個類提供了幾個如引用計數、在V8內部傳遞contex等的實用功能。一般來說,所有對象應該繼承ObjectWrap:

class HelloWorld: ObjectWrap

{

private:

int m_count;

public:

聲明類之後,我們定義了一個靜態成員函數,用來初始化對象並將其導入Node.js提供的target對象中。設個函數基本上是告訴Node.js和V8你的類是如何創建的,和它將包含什麼方法:

閱讀全文

與js擴展對象相關的資料

熱點內容
painter2015視頻教程 瀏覽:204
jsperror 瀏覽:183
網路到底怎麼賺錢 瀏覽:402
蘋果耳機插口接觸不良 瀏覽:934
運動手環app哪個好 瀏覽:854
java設置double精度 瀏覽:587
java代碼分享網站 瀏覽:321
ps怎麼復制到文件裡面 瀏覽:360
win7管理員指紋登錄密碼忘了怎麼辦 瀏覽:38
c是一次性插入多少條數據 瀏覽:928
u盤文件編輯軟體 瀏覽:767
vb如何打開pdf文件 瀏覽:351
soundlinkiii升級 瀏覽:64
如何把文件改成cad 瀏覽:676
如何把多個監控合在一個網路內 瀏覽:637
qq的頭像在哪個文件夾 瀏覽:468
linuxexfat補丁 瀏覽:582
excelvb編程怎麼輸出數 瀏覽:737
567位qq 瀏覽:172
qq網名女生傷感 瀏覽:292

友情鏈接