《說幾道有意思的面試題》html
function Add(...){
...
}
//上面部分是不能夠修改的
//在這裏開始手寫代碼實現需求
var count = 0;
var newCount = 0;
//在函數底下再命名一個相同名字的函數,再去調用原來的函數,加一些計數的操做。
function Add(...){
//經過判斷原型鏈上是否存在add
if(this instanceof add){
//new 出來的對象
newCount++;
}else{
count++;
}
//這裏調用仍是會調用自己,不會調用上面的函數。這裏還沒想通,但願獲得指點。
Add(...);
}
...
複製代碼
function add (){
console.log(this instanceof add);
}
var a = new add();//true
add();//flase
複製代碼
function go(key){
var str = "go"
if(key){
return str+key;
}
var goo=function(key){
if(key){
return str + key
}else{
str =str+"o";
return goo
}
}
goo(key);
return goo
}
console.log(go("d"),go()("d"),go()()("d"));//god good goood
複製代碼
<html>
<body>
<input type="text" id="input"/>
<div id="show"></div>
</body>
<script>
//實現input輸入框和show 雙向綁定
function defineProperty(obj,attr){
var value = "";
Object.defineProperty(obj,attr){
get:function(){
return value;
},
set:function(newValue){
if(newValue===value){
return;
}
value = newValue;
document.getElementById("input").value = newValue;
document.getElementById("show").innerHTML = newValue;
}
}
}
var obj = {};
defineProperty(obj, "txt");
document.getElementById("input").addEventListener("keyup", function(e){
obj.txt = e.target.value;
})
</script>
</html>
複製代碼
參考連接面試
function mixin(sourceObj,targetObj){
for(var key in sourceObj){
if(!(key in targetObj)){
targetObj[key] = sourceObj[key];
}
}
return targetObj;
}
複製代碼
參考《你不知道JavaScript(上)》 P135bash