构造函数返回不是“[Object object]”

时间:2017-01-23 14:18:10

标签: javascript constructor

当我使用String构造函数时,我总是想知道它是如何制作的。它返回你指定为参数的字符串,即使它与“new”运算符实例化如下:

  var str = new String("Hello World")
  //str == "Hello World"

如果我创建一个构造函数并且给它一个返回值,它会在instanciated时返回一个Object:

  function CreateString(st) {
  return ''+st 
  }
  var MyString = new CreateString("Hello there!")
  //MyString == "[Object object]"

如何创建一个返回值[Object object]以外的值的构造函数?

更新: 我正在尝试创建一个构造函数,它具有属性和值本身,如:

   function MyConstructor() {
    this.myMethod = function() {
     return 73
    }
     return 25
   }
    /*I want MyConstructor to have the value 25 and the myMethod method */
   alert(MyConstructor()) // to be 25
   alert(MyConstructor().myMethod()) //to be 73

2 个答案:

答案 0 :(得分:1)

您可以在所需的类中替换toString()函数定义。

function CreateString() {
  function toString() { return 'foo' }
}

示例:Number.prototype.toString()

答案 1 :(得分:0)

通过这一行

def is_subscribed(youtube, channel_id):
        is_subscription_response = youtube.subscriptions().list(
                part='id',
                mine='true',
                forChannelId=channel_id
                ).execute()
        if len(is_subscription_response["items"]) == 0:
                return False
        else:
                return True

您不仅仅是调用函数CreateString,而是要创建一个'类型'的新对象。 CreateString(函数的一个实例)。

我想你想要的只是

var MyString = new CreateString("Hello there!")