JS面向对象的学习

1、面向对象

var arr = new Array();    //[] //我们把系统自带的对象,叫做系统对象

var arr = [];
arr.number = 10;        //对象下面的变量:叫做对象的属性
arr.test = function(){  //对象下面的函数 : 叫做对象的方法
    alert(123);
};

2、面向对象的转变

var obj = new Object();  //创建了一个空的对象
obj.name = ‘小明‘;  //属性
obj.showName = function(){  //方法
    alert(this.name);
};

obj.showName();

var obj2 = new Object();  //创建了一个空的对象
obj2.name = ‘小强‘;  //属性
obj2.showName = function(){  //方法
    alert(this.name);   //函数中的this指的是什么,一般是看函数调用时,函数前面的东西,若无则指的是window,若像下面obj2.showName();则指的是obj2
}; obj2.showName();
//工厂方式 : 封装函数

function createPerson(name){

    //1.原料
    var obj = new Object();
    //2.加工
    obj.name = name;
    obj.showName = function(){
        alert( this.name );
    };
    //3.出场
    return obj;

}

var p1 = createPerson(‘小明‘);
p1.showName();
var p2 = createPerson(‘小强‘);
p2.showName();
//当new去调用一个函数 : 这个时候函数中的this就是创建出来的对象,而且函数的的返回值直接就是this啦(隐式返回)

//new后面调用的函数 : 叫做构造函数

function CreatePerson(name){

    this.name = name;
    this.showName = function(){
        alert( this.name );
    };

}

var p1 = new CreatePerson(‘小明‘);
//p1.showName();
var p2 = new CreatePerson(‘小强‘);
//p2.showName();

alert( p1.showName == p2.showName );  //false

var arr = new Array();
var date = new Date();

3、上面就提到了

p1.showName == p2.showName 为何是false。其原因是,地址引用不同。所以就引出来原型。
//原型 : 去改写对象下面公用的方法或者属性 , 让公用的方法或者属性在内存中存在一份 ( 提高性能 )

//原型 : CSS中的class
//普通方法 : CSS中的style

//原型 : prototype : 要写在构造函数的下面

/*var arr = [1,2,3,4,5];
var arr2 = [2,2,2,2,2];

arr.sum = function(){

    var result = 0;
    for(var i=0;i<this.length;i++){
        result += this[i];
    }
    return result;

};
arr2.sum = function(){

    var result = 0;
    for(var i=0;i<this.length;i++){
        result += this[i];
    }
    return result;

};

//alert( arr.sum() );  //15
//alert( arr2.sum() );  //10*/

var arr = [1,2,3,4,5];
var arr2 = [2,2,2,2,2];

Array.prototype.sum = function(){
    var result = 0;
    for(var i=0;i<this.length;i++){
        result += this[i];
    }
    return result;
};

alert( arr.sum() );  //15
alert( arr2.sum() );  //10

然后返回到上面小明小强的例子,

p1.showName == p2.showName 是false  ,如何变成true
//当new去调用一个函数 : 这个时候函数中的this就是创建出来的对象,而且函数的的返回值直接就是this啦(隐式返回)

//new后面调用的函数 : 叫做构造函数

function CreatePerson(name){

    this.name = name;

}
CreatePerson.prototype.showName = function(){
    alert( this.name );
};

var p1 = new CreatePerson(‘小明‘);
//p1.showName();
var p2 = new CreatePerson(‘小强‘);
//p2.showName();

alert( p1.showName == p2.showName );  //true

var arr = new Array();
var date = new Date();
				
时间: 2024-10-04 18:43:50

JS面向对象的学习的相关文章

JS面向对象逆向学习法,让难理解的统统一边去(1)~

对于面向对象我只能说呵呵了,为什么呢,因为没对象--- 既然你看到了这里,说明你有一定的基础,虽然本系列文章并不会过多的讲述基础部分,请做好心理准备. 本篇比较简单,这篇文章的意义是让你明白学习面向对象所需要掌握东西,并且重点是什么. ------------------------------------------------ 前世: box:那个,你看看,你这代码也叫代码?你知道的,我们可是有理想的公司,再这样的话,你可以走了. --:T_T. box:让你学面向对象,为什么不学! --:

js面向对象的学习记录

1.函数之前加了new会变成对象,this的引用发生变化. function show() { alert(this); } window.onload=function(){ var btn1=document.getElementById('btn1'); btn1.onclick=show; } show(); //window new show(); //新创建的对象 2.原型继承 prototype 这个有的说,之前粗略的看了JavaScript设计模式的时候就说了继承的两种方式. 上

Js面向对象OOP学习指南

Type: 1.基本类型 each variable containing a primitive value uses its own storage space . tip: undefined == null true 2.引用类型

2017.05.06FreeCodeCamp编程之JS面向对象编程学习

1.构造对象的方法: ① ②使用构造函数来创建对象.构造函数 通常使用大写字母开头,以便把自己和其他普通函数区别开. 在 构造函数 中, this 指向被此 构造函数 创建出来的 对象 . 2.使用构造函数的方法:使用构造函数时,我们通过在它前面使用 new关键字 来对它进行调用 要使用 new 关键字 去调用构造函数.因为只有这样,Javascript才知道这是要去构造一个新 对象 ,并且把构造函数中的 this 指向这个新对象. 现在,当 myCar (即 Car 的一个 实例 )创建后,他

js面向对象学习 - 对象概念及创建对象

原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数据属性和访问器属性. 1.数据属性又包含 Configurable //表示能否通过delete删除,默认为true: Enumerable //表示能否通过for-in循环返回属性,默认为true; Writable  //表示能否修改属性的值,默认为true; Value            

js的dom学习笔记一

前言: 我现在不好定位自己程序编写的技术的好坏,新手吧.DOM是实现js脚本连接上HTML文档的一个API,才接触jquery一两天,大概能明白,所谓的框架,就是在原生态的基础上做出的函数库,里面的方法.属性都是要使用该框架的对象来调用的.相比于jquery,DOM不是框架,虽然它们都能实现操控网页文档元素,DOM更加底层,dom的方法.属性直接面对文档元素来使用,而jquery要面向jquery对象来使用. DOM 是一个可以让javaScript脚本操控HTML元素.css属性的一套w3c标

js面向对象实现图片轮播插件

这个demo的学习过程很值得记录下来. 前言:学习了一遍js的面向对象,想找点东西练练手,就上网找了个用js面向对象实现图片轮播插件: http://www.codefans.net/jscss/code/3327.shtml 功能:新建一个实例就是一个图片轮播,可以新建多个,但是实例与实例之间是干扰的. 过程:看视频教程说,第一次搞面向对象,把面向过程改头换面就可以了.自己就死磕地先写了原生,再改为面向对象. 写原生的时候,遇到的问题: 不知道怎么样停止计时器:clearInterval.cl

JS面向对象(1)——构造函数模式和原型模式

1.构造函数模式 构造函数用来创建特定的类型的对象.如下所示: function Person(name,age,job){ this.name=name; this.job=job; this.age=age; this.sayName=function(){ alert(this.name); }; } var person1=new Person('nick',20,'student');var person2=new Person('nick',20,'student');alert(p

js面向对象继承

前言 最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录. js的面向对象 先说说我目前了解的js创建对象方法 1.写一个函数,然后通过new创建对象 2.字面量的方式 如果想要复用的话,可能会用到工厂方法 工厂方法每次都要创建对象 并返回 构造方法创建对象方法可以更简洁 然而构造方法用实现实例间共享共同的方法,比较麻烦 原型可以实现实例共享所有属性 每个函数都有指向原型对象的指针,如果将一个函数的原型属性赋值给另外函数的实例,函数的原型将指向另外一