如何判断对象是否有给定的原型?

时间:2017-12-15 02:00:37

标签: javascript prototype

如何检测给定浏览器是否具有searchParams的{​​{1}}原型? https://developer.mozilla.org/en-US/docs/Web/API/URL/searchParams表示Chrome和FF可以,但Edge不会,但我希望使用JavaScript进行检测。

我与URL混淆了,但不认为它适用。

2 个答案:

答案 0 :(得分:2)

在支持浏览器时,全局对象上将有一个URLSearchParams构造函数,因此与任何其他全局构造函数一样,

'URLSearchParams' in window

typeof window.URLSearchParams === 'function'

同样如此。



const support = typeof window.URLSearchParams === 'function';
console.log('supports URLSearchParams API:', support);

var url = new URL('https://stackoverflow.com/questions/47824782/how-to-tell-if-an-object-has-a-given-prototype?support="true"');
if(support){
    console.log(url.searchParams.get('support'));
}




答案 1 :(得分:-1)

您可能希望向我创建的构造函数添加更多内容,但它类似于:



/* just for testing */ URL = undefined;
if(typeof URL === 'undefined'){
  URL = function(url){
    function sp(){
      var s = url.replace(/^.+?/, '').split('&'), o = {};
      for(var i=0,p,l=s.length; i<l; i++){
        p = s[i].split('='); o[p[0]] = p[1];
      }
      this.get = function(param){
        if(typeof o[param] === 'undefined'){
          return false;
        }
        return o[param];
      }
    }
    this.searchParams = new sp;
  }
}
var url = new URL('http://subdomain.domain.org/somefolder/deeperfolder?param1=value1&param2=value2&param3=value3&test=cool');
var params = url.searchParams;
console.log(params.get('nope'));
console.log(params.get('param2'));
console.log(params.get('test'));
&#13;
&#13;
&#13;