《说几道有意思的面试题》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