js:深入函式(函式是物件)
//由於函式是物件,所以可以直接把函式通過引數傳遞進來;也可以把函式作為返回值。
function calFun(fun,arg){
//第一個引數就是函式物件
return fun(arg);
}
function sum(num){
return num+100;
}
function say(str){
alert("hello "+str);
}
//呼叫了say函式
callFun(say,"js"); //hello js
//呼叫了sum函式
alert(callFun(sum,100)); //200
function fun1(arg){
var rel = function(num){
return arg+num;
}
return rel;
} //返回的是一個函式物件
//f是一個函式物件,可以完成呼叫
var f = fun1(20);
alert(f); //function(num){return arg+name;}
alert(f(30)); //50
var arr = [1,2,33,12,198];
arr.sort();
alert(arr); //1,12,198,33 對於js而言,預設是按照字串進行排序的。
//如果我們希望通過數字大小來排序,可以通過如下方式:
function sortByNum(a,b){
return parseInt(a)-parseInt(b);
}
arr.sort();
alert(arr); //1,2,12,33,198
//根據物件來排序
function Person(name,age){
this.name=name;
this.age=age;
}
var p1 = new Person("John",23);
var p2 = new Person("Lemo",39);
var p3 = new Person("Ada",41);
var ps = [p1,p2,p3];
//ps.sort(sortByAge);
//ps.sort(sortByProperty("age"));
function sortByName(obj1,obj2){
return obj1.name>obj2.name?1:(obj1.name==obj2.name?0:-1);
} //按名字排序
function sortByAge(obj1,obj2){
return obj1.age-obj2.age;
} //按年齡排序
//通過上述方法來處理排序,帶來的問題是需要為每一個屬性建立一個函式,顯然不靈活
//但是如果通過函式的返回值呼叫就不一樣了。
function sortByProperty(propertyName){
var sortFun = function(obj1,obj2){
return obj1[propertyName]>obj2[propertyName]?1:(obj1[propertyName]==obj2[propertyName]?0:-1);
}
return sortFun;
}
相關推薦
從零開始的全棧工程師——js篇2.12(面向物件)
面向物件 Js一開始就是寫網頁特效,面向過程的,作者發現這樣寫不好,程式碼重複利用率太高,計算機記憶體消耗太大,網頁效能很差。 所以作者就收到java和c的影響,往面向物件靠齊。Js天生有一個Object,但他沒有面向物件的特徵(封裝,繼承,多型)。 最後研究出了建構函式。 建構函式最終目的是生成物件
js:選擇器(常用總結)
<ul><li id="foo">foo</li> <li id="bar">bar</li> <li id="baz">baz</li> </ul> $('li').index
javascript深入瞭解(面向物件)
目標:以執行效率最高的方式實現javascript的面向物件模式。 實現目標方式:從最基礎的實現開始一步一步優化到最後的實現方式。請執行或者讀懂每一段程式碼。 一,建立物件: var people1 = new Object();//只有物件上才能新增屬性 p
js:深入函式(函式是物件)
//由於函式是物件,所以可以直接把函式通過引數傳遞進來;也可以把函式作為返回值。 function calFun(fun,arg){ //第一個引數就是函式物件 return fun(arg); } function sum(num){ return num+1
函式和常用模組【day06】:pickle模組(十一)
本節內容 1、dumps序列化和loads反序列化 2、dump序列化和load反序列化 3、序列函式 1、dumps序列化和loads反序列化 dumps()序列化 1
函式和常用模組【day06】:hashlib模組(十二)
本節內容 1、簡述 2、加密 3、sha1加密 4、sha256加密 5、sha384加密 6、sha512加密 7、hmac加密 一、簡述 我們寫程式中,經常需要對字串進行MD5加密,python中也支援這種加密,下面說說,這個加密模組:hashlib。 二、MD5加密
珠峰JS筆記2.1(函式,原型,DOM,this)
> 原型深入 var oBox = document.getElementById('box'); var op = oBox.getElementById('txt'); //報錯,沒有這個方法 報錯:Uncaught TypeError: oBox.getElementB
學習筆記:直面配分函式(待完善)
配分函式,是未歸一化概率所有狀態的積分(對於連續變數)或求和(對於離散變數) 直面配分函式,是由於配分函式,在很多模型上,在積分和求和上面很難計算,所以書中在本章,我認為主要介紹了7種方法,3種策略。 基於MCMC 的改進求解 @@1.對數似然梯度----能量函式(負相
面向物件(建立物件)--建構函式模式02
上一篇工廠模式中有一個例子 現在建立自定義的建構函式,從而定義自定義物件型別的屬性和方法。例如,可以使用建構函式模式將上面的例子重寫如下 function Person(name, age, job) { this.name = name; this
面向物件(建立物件)--寄生建構函式模式06
這種模式的基本思想是建立一個函式,該函式的作用僅僅是封裝建立物件的程式碼,然後再返回新建立的物件;但從表面上看,這個函式又很像是典型的建構函式。 function Person(name, age, job) { var o = new Object();
Opencv學習筆記:addWeighted函式(影象融合)
addWeighted函式 融合圖片尺寸不變 1、函式作用 作用:實現兩幅圖片的(疊加)線性融合; 2、函式原型 void addWeighted(InputArray src1, double alpha, InputArray src2, doubl
spring深入學習(二十) IOC 之建構函式例項化 bean
createBeanInstance() 用於例項化 bean,它會根據不同情況選擇不同的例項化策略來完成 bean 的初始化,主要包括: Supplier 回撥:obtainFromSupplier() 工廠方法初始化:instantiateUsingFactoryMet
5、【C++ STL】仿函式(函式物件)
仿函式(函式物件) 仿函式又稱函式物件,函式物件首先是一個物件,即某個類的例項。其次,函式物件的行為和函式一致,即是說可以像呼叫函式一樣來使用函式物件,如引數傳遞、返回值等。這種行為是通過過載類的()操作符來實現的。 【示例】 class Print {
統計學習方法:核函式(Kernel function)
作者:桂。 時間:2017-04-26 12:17:42 前言 之前分析的感知機、主成分分析(Principle component analysis, PCA)包括後面看的支撐向量機(Support vector machines, SVM),都有用到核函式。核函式是將訊號對映到高維
logistic迴歸詳解(二):損失函式(cost function)詳解
有監督學習 機器學習分為有監督學習,無監督學習,半監督學習,強化學習。對於邏輯迴歸來說,就是一種典型的有監督學習。 既然是有監督學習,訓練集自然可以用如下方式表述: {(x1,y1),(x2,y2),⋯,(xm,ym)} 對於這m個訓練樣本,每個樣本本身
Python:基本運算、基本函式(包括複數)、Math模組、NumPy模組
基本運算 x**2 : x^2 若x是mat矩陣,那就表示x內每個元素求平方 inf:表示正無窮 邏輯運算子:and,or,not 基本函式 字典的get方法 a.get(k,d) get相當於一條if…else…語句。若k在字典a中,
機器學習(一):啟用函式(Activation Function)
0. 啟用函式 上圖為wiki上的定義:啟用函式定義了每個節點(神經元)的輸出和輸入關係的函式。 下表:常用啟用函式 編號 函數 公式 1) sigmoid(
對匿名函式的深入理解(徹底版)
-function(){ console.log(1); }() +function(){ console.log(2); }() ~function(){ console.log(3); }() !function(){ console.log(4); }() &fu
損失函式:Hinge Loss(max margin)
Hinge Loss簡介 Hinge Loss是一種目標函式(或者說損失函式)的名稱,有的時候又叫做max-margin objective。其最著名的應用是作為SVM的目標函式。 其二分類情況下,公式如下: l(y)=max(0,1−t⋅y) 其中,y是預測值(-1到1之間),t為目標值(±1)。
C++之函式物件/偽函式(Function Object)詳解(二)
除了自定義的函式物件,標準庫還為我們提供了一系列現成的函式物件, 比如常見的數學、邏輯運算等。例如:negate<type>(),plus<type>(),minus<type>(),multiplies<type&g