js数据类型主要有一下几个部分:
值类型(基本类型):
1.字符串类型(string)
2.数值类型(number)
3.布尔类型(boolean)
4.对空类型(Null)
5.未定义类型(Undefined)
6.symbol类型:ES6 引入了一种新的原始数据类型js数据类型js数据类型,表示独一无二的值。
引用数据类型:
1.对象类型(Object)
2.数组类型(Array)
3.函数类型(Function)
4.日期类型(Date) (补充)
对象类型(Object类)
object类型是js中所有对象的基类(父类),即JS中的所有对象都是由object衍生出来的。提供了一种创建自定义对象的简单方式,可以不需要定义构造函数。
主要作用:
将任何数据类型封装成对象类型。
主要属性:
constructor:对象的构造函数。prototype:获得类的prototype对象,static。
主要方法:
1.hasOwnProperty(propertyName):判断对象是否具有某一个特定的属性。
注意:必须用字符串指定该属性,返回Boolean值。
var str ="object方法hasOwnProperty()"; //转义字符 "----" , n--换行 alert("str.hasOwnProperty("split")返回an"+str.hasOwnProperty("split")); //return false
var str = "object方法hasOwnProperty()"; //转义字符 "----" , n--换行 alert("String.prototype.hasOwnProperty("split")的结果是:n" + String.prototype.hasOwnProperty("split")); //return true
2.isPrototypeOf(object):判断该对象是否为另一对象的原型。
注意:原型链可以用来在同一个对象类型的不同实例之间共享功能。
obj1.isPrototypeOf(obj2);//obj2 是原型链
例如:
function present() { this.name = 'present food'; } function foods() {} foods.prototype = new present(); var goods = new foods(); alert(goods.name); //present food alert(foods.prototype.isPrototypeOf(goods));//true,在foods的原型链中有当前对象goods,因此isPrototypeOf方法返回true
3.propertyIsEnumberable(propertyName):判断该对象成员是否可以遍历(for in循环)。
注意:预定义的属性不是可列举的,用户定义的属性总是可列举的。
预定义:
var pig = "abcde"; alert(pig.propertyIsEnumerable());
用户自定义:
var p = new Object(); //通过Object直接创建对象 p.Age = 1;//为p对象动态添加属性 document.writeln("p.propertyIsEnumerable("Age"):" + p.propertyIsEnumerable("Age"));
4.ToString():返回改对象对应的字符串(类型转换)。
//var p = new Object(); //通过Object直接创建对象 //p.Age = 1;//为p对象动态添加属性 //document.writeln("p.Age.toString():" + p.Age.toString());//
5.valueof():返回对象对应的原始类型。
var p = new Object(); //通过Object直接创建对象 p.Age = 1;//为p对象动态添加属性 document.write("p.valueOf():" + p.valueOf());//
综合实例:
var p = new Object(); //通过Object直接创建对象 p.Age = 1;//为p对象添加属性 p.Name="剑云锋"; //扩展Object类,为Object类添加一个Show方法 Object.prototype.Show=function(){ alert(this.Age+"t"+this.Name); } alert(p.Age); p.Show(); document.write(""); document.writeln("p.constructor:"+p.constructor);//得到对象的构造函数 document.writeln("Object.prototype:" + Object.prototype);//得到prototype对象,prototype是静态属性,只能通过"类名.prototype"去访问 document.writeln("p.hasOwnProperty("Age"):" + p.hasOwnProperty("Age"));// document.writeln("p.isPrototypeOf(p):"+p.isPrototypeOf(p)); // document.writeln("p.propertyIsEnumerable("Age"):" + p.propertyIsEnumerable("Age"));// document.writeln("p.toString():" + p.toString());// document.writeln("p.valueOf():" + p.valueOf());// document.write("");
综合实例2:
var Bar = function () { }; Bar.prototype.hello = function () { alert("hello Bar"); }; var bar = new Bar(); bar.f = function () { alert("自定义方法"); } document.write(""); document.writeln("bar.hasOwnProperty("f")的结果是:" + bar.hasOwnProperty("f"));//返回ture,bar对象有f方法 document.writeln("bar.propertyIsEnumerable("f")的结果是:" + bar.propertyIsEnumerable("f"));//返回ture,bar对象有f方法,f方法是可以被枚举的 document.writeln("bar.hasOwnProperty("hello")" + bar.hasOwnProperty("hello")); //返回 false,因为bar本身没有hello方法 document.writeln("bar.propertyIsEnumerable("hello")的结果是:" + bar.propertyIsEnumerable("hello")); // 返回false,没有这个方法当然不能枚举 document.writeln("bar.constructor.prototype.hasOwnProperty("hello")的结果是:" + bar.constructor.prototype.hasOwnProperty("hello"));//返回 true,bar的类Bar的原型有hello方法 document.writeln("bar.constructor.prototype.propertyIsEnumerable("hello")的结果是:" + bar.constructor.prototype.propertyIsEnumerable("hello"));// 返回true, bar的类的Bar的原型hello方法是可以被枚举的 document.writeln("Bar.prototype.hasOwnProperty("hello")的结果是:" + Bar.prototype.hasOwnProperty("hello"));// 返回true,bar的类Bar的原型有hello方法 document.writeln("Bar.prototype.propertyIsEnumerable("hello")的结果是:" + Bar.prototype.propertyIsEnumerable("hello"));//返回true document.write("");
限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。