res=str.charAt(1);//返回字符串中第n個字符(輸出:i)
res=str.charCodeAt(1);//返回第n個字符的ASCII編碼(輸出:105)
res=String.fromCharCode(105,97);//根據ASCII編碼返回指定字符,可指定多個(輸出:ia)
res=str.concat('yes');//鏈接字符串,至關於鏈接符+(輸出:Will you set sail tonight?yes)
res=str.indexOf('you',3);//查找字符串'you'首次出現的位置,指定從下標3開始查找(輸出:5)
//經過indexOf能夠統計一個字符在字符串中出現的次數
function _count(str,search){
var count=0,n=0;
while(n!=-1){
count++;
n=str.indexOf(search,n+1);
}
return count;
}
var num=_count('abcaabs','a');
console.log('count:'+num);
res=str.lastIndexOf('you');//返回查找字符最後一次出現的位置,其實是從後面開始查找(輸出:25)
sort的排序原理是什麼?數組
//localCpmpare比較字符串(實現中文按照字母排序)
var array = ['白鴿', '麻雀', '大象', '狗', '貓', "雞"];
array = array.sort(
function compareFunction(item1, item2) {
return item1.localeCompare(item2);
}
);
//輸出:"白鴿,大象,狗,雞,麻雀,貓"
var arr=[6,1,3,5,2,8]
arr=arr.sort(
function(x,y){
return x>y;//從小到大排序
}
)
輸出:"1,2,3,5,6,8"
match匹配,search搜索,replace代替app
var str='this is a test';
var res;
res=str.match('is');//輸出:["is", index: 2, input: "this is a test"]
res=str.search('is');//輸出:2
res=str.replace(/is/g,'?');//全局匹配。輸出:"th? ? a test",若是不加g,只替換第一個is
str='2017-12-9';
res=str.replace(/(\d{4})-(\d{2})-(\d{1,2})/,'$2/$3/$1');//輸出:"12/9/2017"
//用函數實現
res=str.replace(/(\d{4})-(\d{2})-(\d{1,2})/,func);
function func(match,d1,d2,d3){
// return d2+'/'+d3+'/'+d1;
return [d2,d3,d1].join('/');
}
console.log(res);
字符串截取函數
var str='abcde';
var res;
//slice(start.end),返回截取後的字符串
//substr(start,length),返回截取以後的字符串
//split(delimiter[,limit]),將字符串拆分爲數組
res=str.slice(0,-1);//輸出:abcd
res=str.substr(2,2);//輸出:cd
str='red,green,blue';
res=str.split(',',2);//2是可選參數,表示返回兩個元素,輸出:"red,green"
其餘this
//字符串大小寫相關 str='HELLO world'; res=str.toLowerCase();//換成小寫 res=str.toLocaleLowerCase();//也是換成小寫 res=str.toUpperCase();//大寫 //trim字符串過濾 str=' hello world '; res=str.trim();//去掉了先後的空格 //產生錨點 str='this is a test'; document.body.innerHTML=str.anchor('anchor_name');//<a name="anchor_name">this is a test</a> //產生連接 var title='百度'; var url="http://www.baidu.com"; document.write(title.link(url));\n //<a href="http://www.baidu.com">百度</a>
var res; function a(x,y,z){ return x+y+z; } //一、constructor返回建立該對象的構造函數 res=a.constructor;//輸出:function Function() { [native code] } //二、length返回函數的參數個數 res=a.length;//輸出:3 //三、caller返回調用當前函數的函數 function f1(){ return f1.caller; } function f2(){ return f1(); } res=f2(); //輸出:"function f2(){return f1();}" //四、arguments返回由函數的全部參數組成的數組 function a(){ return arguments; } res=a(1,2,'c');//輸出:[1, 2, "c", callee: function, Symbol(Symbol.iterator): function] //arguments有個callee屬性,返回當前被調用的函數對象 function a(){ return arguments.callee; } res=a(); //輸出:function a(){……} //能夠利用callee屬性實現匿名函數的自身調用 (function(count){ if(count<=3){ alert(count); arguments.callee(++count); } })(0);
call和apply方法編碼
//call回調函數
var obj={
say:function(x,y){return x+y;}
};
var obj1={};
res=obj.say.call(obj1,1,2);//obj1調用obj的方法,1,2是參數
res=obj.say.apply(obj,[2,3]);//跟call方法差很少,只不過參數以數組形式傳遞
var res;
res=Math.E;//輸出: "2.718281828459045"
res=Math.PI;//輸出:"3.141592653589793"
res=Math.abs(-123);//取絕對值,輸出:123
res=Math.ceil(2.14);//向上取整,輸出:2
res=Math.floor(2.82);//向下取整,輸出:2
res=Math.round(2.45);//四捨五入,輸出:2
res=Math.pow(2,3);//2的3次方根,輸出:8
res=Math.sqrt(16);//開方根,輸出:4
res=Math.max(1,45,6);//求最大值,輸出:45
console.log(res)
function product(name,color){
this.name=name;
this.color=color;
this.say=function(){return 'this is a test';};
}
product.prototype.price=123;
product.prototype.memory=32;
var p1=new product('蘋果手機','白色');
//new運算符,函數裏面的this自動指向創造的對象,product函數裏面的this指代p1,
//因此p1有3個自身屬性,price和memory是原型鏈的屬性
for(var i in p1){
//判斷是不是自身屬性
if(p1.hasOwnProperty(i)){
console.log(p1[i]);//不能用p1.i
}
}
String.prototype.reverse=function(){ return Array.prototype.reverse.apply(this.split('')).join(''); } console.log('abc'.reverse());//輸出:cba //檢測方法是否存在,不存在則擴展 if(!Array.prototype.inArray){ // alert('no'); Array.prototype.inArray=function(search){ for(var i=0;i<this.length;i++){ if(this[i]==search){ return true; } } return false; } } var arr=['a','b','c']; console.log(arr.inArray('A'));