分享一波js面试题

245 阅读1分钟

1.点击按钮会不会刷新页面。

<template>
    <div>
        <ul>
            <li v-for="item in obj">{{item}}</li>
        </ul>
        <button @click="change">点击</button>
    </div>
</template>

<script>
export default {
    data(){
        return{
            obj : {
                a : '1'
            }
        }
    },
    methods:{
        change(){
            this.obj.b = '改变'
        }
    }
}
</script>

答案:不会。因为新添加的b属性不是响应式的。

2.代码的执行结果

function Foo(){
    Foo.a=function(){console.log(1)} 
    this.a=function(){console.log(2) }
}
Foo.prototype.a=function(){console.log(3)}
Foo.a=function(){console.log(4)}
Foo.a();
let obj =new Foo();
obj.a();
Foo.a();

答案:4 2 1。 解释:

  • 第一次运行Foo.a() 并没有执行函数Foo。所以会打印4
  • 第二次运行new 了一个Foo,FOO里面的a属性会覆盖Foo之前的a。
  • obj调用a属性,直接调用obj的a方法 打印2
  • 最后执行Foo.a()因为a属性已经被覆盖了 所以打印1.