function getText(ele) { if (ele.nodeType === 3) { return ele.data.replace(/[\s]/g, ''); } var result = []; var childNodes = ele.childNodes; for (var i = 0; i < childNodes.length; i++) { if (childNodes[i].nodeType === 3) { // result += childNodes[i].data.replace(/[\s]/g, ''); result=result.concat(childNodes[i].data.replace(/[\s]/g, '')); } else if (childNodes[i].nodeType === 1) { // result += getText(childNodes[i]); result=result.concat(getText(childNodes[i])); } } console.log(result); return result; } var elem = document.getElementById('text'); getText(elem)
function getText(ele){ if (ele.nodeType === 3) { return ele.data.replace(/[\s]/g, ''); } var result=''; var childNodes = ele.childNodes; for(var i=0;i<childNodes.length;i++){ if(childNodes[i].nodeType===3){ result += childNodes[i].data.replace(/[\s]/g, ''); }else if(childNodes[i].nodeType === 1){ result += getText(childNodes[i]); } } console.log(result); return result; // console.log(ele.childNodes) // console.log(childNodes[0].data.replace(/[\s]/g,'')) }
function add () { var args = [].slice.call(arguments); var fn = function () { var arg_fn = [].slice.call(arguments); console.log(args.concat(arg_fn)) ; return add.apply(null, args.concat(arg_fn)); } fn.valueOf = function() { return args.reduce((a, b) => a + b); } return fn; } add(1)(2)(3)
function add(a){ var sum=a; var result = function(b){ sum+=b; console.log(sum) return arguments.callee; } result.valueOf = function(){ return sum; } return result; } add(1)(3)(2)
注意: 以上代碼中的重寫函數的 valueOf 方法或者 toString 方法,在某些時候是會本身調用的,還牽扯到了類型轉換。若是沒有valueOf,return 的結果就是一個函數,得不到具體的值。javascript
Object.prototype.valueOf() valueOf() 方法返回指定對象的原始值。java
JavaScript 調用 valueOf() 方法用來把對象轉換成原始類型的值(數值、字符串和布爾值)。可是咱們不多須要本身調用此函數,valueOf 方法通常都會被 JavaScript 自動調用。node
Object.prototype.toString() toString() 返回一個表示該對象的字符串。面試
每一個對象都有一個 toString() 方法,當對象被表示爲文本值時或者當以指望字符串的方式引用對象時,該方法被自動調用。數組
valueOf() 和 toString() 在特定的場合下會自行調用。閉包
原始類型 javascript 的幾種原始類型,除去 Object 和 Symbol,有以下幾種原始類型:app
Number String Boolean Undefined Null 在 JavaScript 進行對比或者各類運算的時候會把對象轉換成這些類型,從而進行後續的操做。dom