将对象转换为字符串

问题描述:

我有一个对象从一个字段msg返回的对象。我试图从msg中获取值并将其转换为字符串,因此我可以使用.startswith()。我想下面..将对象转换为字符串

var msgstring = msg.value 
if(msgstring.startsWith("string")){ 
    //Doing stuff! 
} 

不过,我得到以下错误...

Uncaught TypeError: Object string here has no method 'startsWith' 

我要去哪里错了?

+1

你有一个缺少'''表明这不是你真正的测试用例。 – 2011-03-15 12:21:58

+0

http://*.com/questions/646628/javascript-startswith可能的重复 – Chris 2011-03-15 12:24:52

Javascript has no startsWith method。您可以使用

msgstring.indexOf('string') === 0 

的错误是正确的,JS有string对象没有本地startsWith方法。

你可以自己构建扩展原型,或使用功能:

function StartsWith(s1, s2) { 
    return (s1.length >= s2.length && s1.substr(0, s2.length) == s2); 
} 

var msgstring = msg.value; 
if(StartsWith(msgstring, "string") { 
    //Doing stuff! 
} 

您在假设有一个名为“startsWith”功能会错。 JavaScript中没有这样的功能。

请看看这个问题:

How to check if a string "StartsWith" another string?

你会发现那里的JavaScript对象自己如何卡恩添加此功能。

JavaScript中没有startsWith()函数。你需要自己写一个。

确切地说,你正在阅读的是字符串对象(你的变量msgstring)没有一个叫做startsWith的方法。阅读有关使用字符串in here的更多信息。

你可能想这样做:

msgstring.substr(0, 6) == "string" 

试试这个:

var msgstring = msg.value; 
if(!msgstring.indexOf("string")){  
     //Doing stuff! 
} 

大家都已经提到,可与JS没有startsWith功能,我们需要创建一个为了我们。下面是相同的实现

if (typeof String.prototype.startsWith != 'function') { 
    //Implementation to startsWith starts below 
    String.prototype.startsWith = function (str){ 
    return this.indexOf(str) == 0; 
    }; 
} 

这样做后,你可以直接调用startsWith函数与你的字符串。 此关键字将是您调用该函数的字符串,str将是您与之比较的字符串。