造轮子-js,vue自测

1

window.n = 'window name'
let obj = {
    n: 'obj name',
    sayN(){
        console.log(this.n)
    }
}

let fn = obj.sayN
fn()

fn()调用的时候没有传递任何信息 在这里的this指代的是window

2

window.n = 'window name'
let obj = {
    n: 'obj name',
    sayN: () => {
        console.log(this.n)
    }
}

obj.sayN()

箭头函数的this指的是他外面那一层的this,也就是window的this

3

Promise.reject('error')
    .then( ()=>{console.log('success1')}, ()=>{console.log('error1')} )
    .then( ()=>{console.log('success2')}, ()=>{console.log('error2')} )

第一个then因为是reject的原因所以执行的是error1
由于error1之后没有catch任何东西
所以第二个then执行的是success2

4

window.name = 'window name'
let app = new Vue({
    name: 'name 1',
    el: '#app',
    data(){
      return {name:'name 2'}
    },
    created(){
        console.log(this.name)
    }
})

this.name 中的this指的是app这个vue实例,然后app.name是在data中定义的函数name

5

当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。
为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。
理想的 key 值是每项都有的且唯一的 id。
2.2.0+ 的版本里,当在组件中使用 v-for 时,key 是必须的。

6

var myMixin = {
  created: function () {
    this.hello()
  },
  methods: {
    hello: function () {
      console.log('hello from mixin!')
    }
  }
}

var Component = Vue.extend({
  mixins: [myMixin],
  methods: {
    hello(){
      console.log('hello from options')
    }
  }
})

var component = new Component()

mixins只会在自身没有定义方法的时候调用mixins,当自重新构造方法的时候,将自己重新调用自身的方法

7

function getSomething(){
    setTimeout(function(){
        return 'hello'
    })
}

let something = getSomething()
console.log(something)

getSomething这个function没有返回任何的值,所以没有任何作用

8

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。

你可能感兴趣的:(造轮子-js,vue自测)