HTML5技术

JavaScript面向对象(OOP) - 姐姐jy(2)

字号+ 作者:H5之家 来源:H5之家 2017-10-15 08:12 我要评论( )

var s="123"; // 不是对象 s.name="aaa" ;console.log( typeof (s)); // String console.log(s.name); s= new String("123"); // 是对象 s.name="aaa" ;console.log( typeof (s)); // Object console.log(s.name);

var s="123"; //不是对象 s.name="aaa"; console.log(typeof(s)); //String console.log(s.name); s=new String("123"); //是对象 s.name="aaa"; console.log(typeof(s)); //Object console.log(s.name); //"aaa" 使用new声明的字符串是对象,能添加属性和方法。

 

二、 成员属性、静态属性和私有属性

1、在构造函数中,使用this.属性声明。或者在实例化出对象以后,使用"对象.属性"追加的,都属于成员属性或成员方法。也叫实例属性或实例方法。
     成员属性/方法,是属于由类new出的对象的。
     需要使用"对象名.属性名"调用。

【静态属性与静态方法】
2、通过“类名.属性名”、“类名.方法名”声明的属性和方法,称为静态属性、静态方法。也叫类属性和类方法。
     类属性/类方法,是属于类的(属于构造函数的)
     通过"类名.属性名"调用。

3、成员属性是属于实例化出的对象的,只能使用对象调用。
静态属性是属于构造函数的,只能使用类名调用。

[私有属性和私有方法]
4、在构造函数中,使用var声明的变量称为私有属性;
在构造函数中,使用function声明的函数,称为私有方法;

function Person(){ func(){}//私有方法 }

私有属性和私有方法的作用域,只在构造函数内容有效。即只能在构造函数内部使用,在构造函数外部,无论使用对象名还是类名都无法调用。

 

function Person(name){ sex="男";//私有属性 } var zhangsan=new Person("张三"); zhangsan.age=14; //追加成员属性 alert(zhangsan.name); //调用成员属性 Person.count="60亿"; //声明静态属性 alert(Person.count); lisi=

 

三、 JavaScript模拟实现封装

1、什么叫封装?
①方法的封装:将类内部的函数进行私有化处理,不对外提供接口,无法在类外部使用的方法,称为私有方法,即方法的封装。
②属性的封装:将类中的属性进行私有化处理,对外不能直接使用对象名访问(私有属性)。同时,需要提供专门用于设置和读取私有属性的set/get方法,让外部使用我们提供的方法,对属性进行操作。这就叫属性的封装。
2、注意:封装不是拒绝访问,而是限制访问。要求调用者,必须使用我们提供的set/get方法进行属性的操作,而不是直接拒绝操作。
因此,单纯的属性私有化,不能称为封装!必须要有私有化后,提供对应的set/get方法。

function Person(name,age1){ age=0; this.setAge=function(ages){ if(ages>0&&ages<=120){ age=ages; }else{ alert("年龄赋值失败"); } } (age1!=undefined) this.setAge(age1); this.getAge=function(){ return age; } this.sayTime=function(){ alert("我说当前时间是:"+getTime()); } this.writeTime=function(){ alert("我写了当前时间是:"+getTime()); }
getTime(){ return new Date(); } } var zhangsan=new Person("张三",99); zhangsan.setAge(99); alert("张三的年龄是"+zhangsan.getAge()); var lisi=new Person("李四",99); lisi.setAge(110); alert("李四的年龄是:"+lisi.getAge());

 

四、JavaScript中的this指向详解

1、谁最终调用函数,this最终指向谁(记住!)
①this指向谁,不应考虑函数在哪声明,而应该考虑函数在哪调用!!!
②this指向的永远只可能是对象,而不可能是函数。
③this指向的对象,叫做函数的上下文context,也叫函数的调用者。


2、this指向的规律!!!(跟函数的调用方式息息相关,记住这点,相信你一定会分清this指向哒)
①通过函数名()调用的,this永远指向window
②通过对象.方法调用的,this指向这个对象。
③函数作为数组中的一个元素,用数组下标调用的,this指向这个数组
④函数作为window内置函数的回调函数使用,this指向window。
setInterval setTimeout 等。
⑤函数作为构造函数,使用new关键字调用,this指向新new出的对象。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 一文为你详细讲解对象映射库【AutoMapper】所支持场景 - Jeffcky

    一文为你详细讲解对象映射库【AutoMapper】所支持场景 - Jeffcky

    2017-10-08 12:03

  • 【java】关于java类和对象,你想知道的在这里! - 外婆的彭湖湾

    【java】关于java类和对象,你想知道的在这里! - 外婆的彭湖湾

    2017-09-17 14:05

  • this的用法 – JavaScript深入浅出(二) - OkayChen

    this的用法 – JavaScript深入浅出(二) - OkayChen

    2017-09-15 12:00

  • JavaScript: 使用 atan2 来绘制 箭头 和 曲线 - 救火队长

    JavaScript: 使用 atan2 来绘制 箭头 和 曲线 - 救火队长

    2017-09-14 08:04

网友点评
i