为什么无法执行getsetting函数呢?总提示is not a function

来源:2-3 默认配置参数设置及扩展

qq_Mr华_0

2017-05-25 14:33

;(function($){

// alert($);

var House = function(obj){

//先保存一下obj对象,方便内部调用

this.obj = obj;

this.set = {

"width":1000,

"height":800,

"posterWidth":700,

"posterHeight":800,

"speed":500,

"scale":0.9,

"verticalAlign":"middle"

};

$.extend(this.set,{"width":500});

//$.parseJSON(this.set,);

// console.log(this.set);

console.log(this.getSetting());

};


House.method = {

//用于获取处理用户在标签的配置

getSetting:function(){

var setting = this.obj.attr('data-set');

if(setting && setting!=null){

return($.parseJSON(setting));

}else{

return {};

}

}

};


写回答 关注

1回答

  • 慕粉1105539739
    2017-06-01 10:24:05

    我想你是运行到new House(obj)时出现这个错误的吧?

    这个和js中的继承有关。修改代码如下

    House.prototype = {...

    原理,this是指向House的实例house(比如,

    var house = new House(obj);

    )。this是无法取到House.method这个对象的。所以,this.getSetting其实是返回的是undefined,当然不是一个函数。

    即使写成

    console.log(this.method.getSetting());

    也会报错,原因同上:this是无法取到House.method这个对象的。

    看一下js中的继承就可以了。

    看了之后想一下,改成

    console.log(House.method.getSetting());

    是否会报错


JS实现“旋转木马”幻灯片效果

JS组件封装,制作一个图片幻灯片切换效果,一起学习吧

66442 学习 · 147 问题

查看课程

相似问题