function Is() {
var agent = navigator.userAgent.toLowerCase();
this.major = parseInt(navigator.appVersion); //Major version number
this.minor = parseFloat(navigator.appVersion);//Full version number
this.ns = ((agent.indexOf('mozilla')!=-1) &&
((agent.indexOf( 'spoofer')==-1) && //Whether Netscape
(agent.indexOf('compatible') == -1)));
this.ns2 = (this.ns && (this.major == 3)); // Whether Netscape 2
this.ns3 = (this.ns && (this.major == 3)); // Whether Netscape 3
this.ns4b = (this.ns && (this.minor < 4.04)); // Whether Netscape 4 is a low version
this.ns4 = (this.ns && (this.major >= 4)); // Whether Netscape 4 is a high version
this.ie = (agent.indexOf("msie") != -1); //Whether IE
this.ie3 = (this.ie && (this.major == 2)); //Whether IE 3
this.ie4 = (this.ie && (this.major >= 4)); //Whether IE 4
this.op3 = (agent.indexOf("opera") != -1); //Whether it is Opera 3
this.win = (agent.indexOf("win")!=-1); //Whether it is Windows version
this.mac = (agent.indexOf("mac")!= -1); //Whether it is Macintosh version
this.unix = (agent.indexOf("x11")!=-1); //Whether it is Unix version
}
var is = new Is() ;
This constructor collects browser information very completely. We see that it defines many attributes for objects: major, minor, ns, ie, win, mac, etc. See the notes above for their meanings. After defining the is variable as an Is() object, you can easily know the browser information using the format if (is.ns). We can also see from this constructor that it can also use normal JavaScript statements (var statements in the above example).
Let us look at another constructor using parameters:
function myFriend(theName, gender, theAge, birthOn, theJob) {
this.name = theName;
this.isMale = (gender.toLowerCase == 'male');
this.age = theAge;
this.birthday = new Date(birthOn);
this.job = theJob
}
var Stephen = new myFriend('Stephen', 'Male', 18, 'Dec 22, 1982', 'Student');
From this constructor we not only see the usage of parameters, but also see that different attributes can use different data types (the above example The five attributes are: string, Boolean, number, date, string). We also saw that the constructor can also be used to "construct" attributes in the constructor. If enough "protection measures" are used to avoid infinite loops, you can use the constructor itself to construct your own properties.