Twitch
老生
老生
  • UID532
  • 粉丝0
  • 关注0
  • 发帖数4
阅读:706回复:1

第4回、课堂练习

楼主#
更多 发布于:2017-07-13 23:07

var news = {
    data () {
        return {
            id: 1001,
            title: "新闻标题"
        }
    },
    test () {
        alert(this.data().id); // 这里可以通过this拿到data里的数据
    },
    methods: {
        show () {
            // 这个时候的this指向其实已经不是我们认为的 news 了,在这里其实已经变成了 methods
            // console.log(this);
            // 那在methods 是不是也可以通过这种方式拿到呢,我们来试试吧
            //alert(this.data().id); // Uncaught TypeError: this.data is not a function  从这里可以发现并不是我们想象的那样
            // 在vue框架里和其他的框架,可以发现 只需要 使用 this.id 就能访问到了,这是沈原因?
            alert(this.id);
        }
    }
};

Object.assign(news.methods, news.data()); // 将原对象的属性和方法复制给目标对象
// news.methods.show();

var God = {
    extends (obj) {
        var objName = '';
        for (var key in window) {
            if (window[key] === obj) {
                objName = key;
            }
        }
        this[objName] = {};
        Object.assign(this[objName], obj);
    }
};

God.extends(news);
God.news.methods.show();







请老师指点!!!
Twitch
老生
老生
  • UID532
  • 粉丝0
  • 关注0
  • 发帖数4
沙发#
发布于:2017-07-13 23:07
请沈老师 指点 我这样写 有什么缺陷和考虑不足的吗?自己感觉 会有更好的实现方法
游客

返回顶部