摘要:總結一下的核心對象上的方法,也幫助自己學習一下平時工作中沒怎么用到的方法,看能不能提高開發效率。我當前使用的版本是也是目前最新的穩定版本,不過在全局上,版本不同也沒什么區別。在引入了的情況下,使用方法和幾乎一樣,相當于一個語法糖。
總結一下AngularJS的核心對象angular上的方法,也幫助自己學習一下平時工作中沒怎么用到的方法,看能不能提高開發效率。我當前使用的Angularjs版本是1.5.5也是目前最新的穩定版本,不過在全局API上,版本不同也沒什么區別。
AngularJS 全局 API列表element
bootstrap
copy
extend
merge
equals
forEach
noop
bind
toJson
fromJson
identity
isUndefined
isDefined
isString
isFunction
isObject
isNumber
isElement
isArray
version
isDate
lowercase
uppercase
module
angular.forEachforEach(obj, iterator)
遍歷obj(可以是對象,也可以是數組)對象,并依次調用iterator(value, key, obj)函數。
其中iterator函數,接收的三個參數分別為
value: 對象的屬性(數組元素)
key: 對象的屬性名(數組的索引)
obj: 數組(對象)本身
例子:
var list = ["小明", "小毛", "小周", "小蕾"]; angular.forEach(list, function (val, key) { console.log(key + "號同學:" + val); }) var obj = { name: "吳登廣", age: "21", title: "worker" } angular.forEach(obj, function (val, key) { console.log(key + ":" + val); })
效果:
angular.module這個方法大家應該都很熟悉了
module(name, requires),name為模塊名,requires(可選)為依賴的模塊,當有依賴的模塊數組的時候,表示注冊一個模塊,沒有時為引用一個模塊。
例子:
angular.module("main", []); console.log(angular.module("main"));
效果:
angular.element這個方法是用來操作DOM的,一般在指令里面使用。
在引入了jquery的情況下,使用方法和jquery幾乎一樣,相當于一個語法糖。
var ele = angular.element("h1"); console.log(ele.html());
在沒有引入jquery的情況下,使用的其實是jqLite(angular自己封裝的類似于jquery的一個東西),使用方法也類似,只不過不支持一些jquery的選擇器。
var ele = angular.element(document.getElementsByTagName("h1")[0]); console.log(ele.html());
至于用jqLite獲取到的封裝過后的DOM節點和jquery的有點不太一樣,這里可以參考一篇文章。
angular.bootstrap這個函數不太常用。如果你不想使用ng-app指令來啟動angular應用的話,可以用angular.bootstrap()來啟動
angular.element(document).ready(function() { angular.bootstrap(document, []); });
需要依賴的模塊數組做為參數。
angular.toJson其實就是調用JSON.stringify()方法將一個對象或數組,格式化為JSON字符串。
angular.fromJSON就是調用JSON.parse()方法將一個JSON字符串轉換為一個對象
例子:
var user = { name: "Jax2000", age: 21, title: "worker" } user = angular.toJson(user) console.log(user); user = angular.fromJson(user); console.log(user);
效果:
angular.copycopy(source, destination)
深復制一個對象或者數組,這是一個非常實用的方法,熟悉js的人都應該知道,js中 = 操作符,實際上復制的是指針,所以前后兩個變量指向的還是內存中的同一個對象,所以我們在其中一個變量上操作該對象時,對另外一個變量也會生效,有時候我們并不希望出現這種情況。然后angular.copy方法就是深復制,會在內存中再生成一個對象,兩個變量就可以獨立,相互不產生影響。
接收一個必須參數source,和一個可選參數destination
var user1 = { name: "wudengguang", age: 21, title: "worker" } var user2 = user1; var user3 = angular.copy(user1); var user4 = {}; // 注意這個user4必須是一個對象或者數組 angular.copy(user1, user4); user1.name = "liulei"; console.log("user1:" + user1.name); console.log("user2:" + user2.name); console.log("user3:" + user3.name); console.log("user4:" + user4.name);
效果:
可以看到改變user1的name字段之后,淺復制的user2受到了影響,而深復制的user3和user4沒有受到影響
angular.extendextend(destination, src1, src2...)
這個方法是用來擴展對象的,destination為要擴展的對象,會將后面的對象的屬性全部復制到destination中,不過是淺復制
var user1 = { name: "Jax2000", age: 21, } var user2 = { age: 22, skill: {} } var dst = {}; angular.extend(dst, user1, user2); console.log(dst); console.log(dst.skill === user2.skill);angular. merge
這個方法和extend方法是一樣的,也是用來擴展目標對象的,不過用的是深復制
var user1 = { name: "Jax2000", age: 21, } var user2 = { age: 22, skill: {} } var dst = {}; angular.merge(dst, user1, user2); console.log(dst); console.log(dst.skill === user2.skill);
merge和extend常用于獲取存儲在服務端的用戶設置,然后需要和本地的結合的這一類案例。如果對于copy,extend,merge的區別還不是很了解的話,可以看這篇文章。
angular.equalsequals(o1, o2)
見文知意,判斷兩個對象或者值是否相等,其中對象只要是屬性都想同即可。
var user1 = { name: "Jax2000", age: 21, } var user2 = { age: 21, name: "Jax2000" } console.log(angular.equals(user1, user2));
結果是true
angular.noop這個方法直接看源代碼就知道了
function noop() {}
我也不是很清楚,這個東西干嘛的,可能是有些函數需要回調函數做為參數,在沒有時調用的吧,官方的文檔案例:
function foo(callback) { var result = calculateResult(); (callback || angular.noop)(result); }angular.bind
這個方法就是返回一個有特定作用域的函數對象
angular.bind(self, fn, args)
self: 函數的作用域
fn: 需要改變作用域的函數
args: 需要傳遞給該函數的參數數組
var user1 = { name: "Jax", age: 21, } var user2 = { age: 21, name: "Scarlett" } function sayName(user) { console.log(this.name, user.name); } var _sayName = angular.bind(user1, sayName, user2); _sayName();
效果就是打印出了 Jax Scarlett
angular.identity該函數也很簡單,就是返回這個函數接收到的第一個參數
例子也用官方的例子好了
function getResult(fn, input) { return (fn || angular.identity)(input); }; getResult(function(n) { return n * 2; }, 21); // returns 42 getResult(null, 21); // returns 21 getResult(undefined, 21); // returns 21angular.isUndefined
判斷傳入的參數是否為undefined
console.log(angular.isUndefined(undefined)); // true console.log(angular.isUndefined(null)); // falseangular.isDefined
判斷傳入進來的參數是否不是undefined
console.log(angular.isDefined(undefined)); // false console.log(angular.isDefined(null)); // trueangular.isString
判斷傳入進來的參數是否為字符串
console.log(angular.isString("123")); // true console.log(angular.isString(123)); // falseangular.isNumber
判斷傳進來的參數是否為number類型
console.log(angular.isNumber("123")); // false console.log(angular.isNumber(123)); // trueangular.isFunction
判斷傳遞進來的參數是否為一個函數
console.log(angular.isFunction(fn)); // true console.log(angular.isFunction(fn())); // falseangular.isObject
判斷傳遞進來的參數是否為對象(null 除外)
console.log(angular.isObject({})); // true console.log(angular.isObject(null)); // false console.log(angular.isObject(123)); // falseangular.isArray
就是Array.isArray
判斷傳入進來的參數是否為數組
console.log(angular.isArray([])); // true console.log(angular.isArray(null)); // falseangular.isElement
判斷傳遞進來的參數是否為一個DOM節點(被jquery擴展過的也可)
var body = angular.element(document.getElementsByTagName("body")[0]); console.log(angular.isElement(body)); // trueangular.isDate
判斷傳遞進來的對象是否為Date類型
console.log(angular.isDate(new Date())); // trueangular.lowercase
將一個字符串轉換為小寫
angular.upercase將一個字符串轉換為小寫
console.log(angular.lowercase("ABCD")); // abcd console.log(angular.uppercase("abcd")); // ABCDangular.version
這是一個屬性,返回angular的版本
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/49862.html
摘要:總結一下的核心對象上的方法,也幫助自己學習一下平時工作中沒怎么用到的方法,看能不能提高開發效率。我當前使用的版本是也是目前最新的穩定版本,不過在全局上,版本不同也沒什么區別。在引入了的情況下,使用方法和幾乎一樣,相當于一個語法糖。 總結一下AngularJS的核心對象angular上的方法,也幫助自己學習一下平時工作中沒怎么用到的方法,看能不能提高開發效率。我當前使用的Angularj...
摘要:入門一前言目前來說相對于現在流行的高版本以及來說實屬是老套的前端框架了,當然這都不重要,沒有完美的框架,只有不斷優化的代碼。通過使用我們稱為指令的結構,讓瀏覽器能夠識別新的語法。使用作為輸入,而不是字符串,是區別于其它的框架的最大原因。 AngularJs 入門(一) 前言 AngularJs目前來說相對于現在流行的高版本ng2、ng4,以及Vue2.0、React來說實屬是老套的前...
流行框架 簡介 angularjs是一款非常優秀的前端高級JS框架,由谷歌團隊開發維護,能夠快速構建單頁web應用,化繁為簡 無論是angularjs還是jQuery都是用原生JS封裝的 庫:對代碼進行封裝,調用封裝的方法,簡化操作 傳統方式是用get方式獲取元素,然后點方法 jQuery庫實現了對獲取方式的封裝,對方法的封裝 框架:提供代碼書寫規則,按照規則去寫代碼,框架會幫我們實現響應的功能...
閱讀 1671·2021-09-26 10:00
閱讀 2935·2021-09-06 15:00
閱讀 3538·2021-09-04 16:40
閱讀 2298·2019-08-30 15:44
閱讀 715·2019-08-30 10:59
閱讀 1883·2019-08-29 18:34
閱讀 3616·2019-08-29 15:42
閱讀 2292·2019-08-29 15:36