js面向对象

js面向对象编程

会有一股神秘感。 提交于 2019-12-04 06:48:38
js面向对象编程 什么是面向对象编程?用对象的思想去写代码,就是面向对象编程 对象的组成: 对象的属性 对象的方法,就是对象的一些行为(通常是一个函数) var person = { name: "黎明", sex: "男", age: 18, sayHello: function() { console.log("大家好,我的名字是" + this.name + "," + this.sex + ",今年" + this.age) //this 代表当前对象 } } console.log(person.name); //对象的属性 person.sayHello(); //对象的方法 什么是构造函数? 简单的说构造函数就是类函数 对象是类的一个具体实例 类是对象的抽象 或者说 是由对象泛化而来 简单的例子: function Car(name, color, num) { this.name = name; this.color = color; this.num = num; this.say = function() { console.log("大家好,我是一辆" + this.name + "车,我是" + this.color + ",有" + this.num + "个轮胎"); } } var lubu = new Car("路虎", "红色", "4");

JS原型,原型链,类,继承,class,extends,由浅到深

我与影子孤独终老i 提交于 2019-12-03 12:19:33
一、构造函数和原型 1、构造函数、静态成员和实例成员 在ES6之前,通常用一种称为构造函数的特殊函数来定义对象及其特征,然后用构造函数来创建对象。像其他面向对象的语言一样,将抽象后的属性和方法封装到对象内部。 function Person(uname, age) { this.uname = uname; this.age = age; this.say = function() { console.log('我叫' + this.uname + ',今年' + this.age + '岁。'); } } var zhangsan = new Person('张三', 18); zhangsan.say(); //输出:我叫张三,今年18岁。 var lisi = new Person('李四', 20); lisi.say(); //输出:我叫李四,今年20岁。 在创建对象时,构造函数总与new一起使用(而不是直接调用)。new创建了一个新的对象,然后将this指向这个新对象,这样我们才能通过this为这个新对象赋值,函数体内的代码执行完毕后,返回这个新对象(不需要写return)。 构造函数内部通过this添加的成员(属性/方法),称为实例成员(属性/方法),只能通过实例化的对象来访问,构造函数上是没有这个成员的。 >> Person.uname undefined

js面向对象编程-构建对象

匿名 (未验证) 提交于 2019-12-03 00:32:02
<script> //工厂模式:会出现不能查看实体对象是谁的实例化 function CreatObj ( name , age ){ var obj = new Object () obj . name = name obj . age = age obj . say = function (){ alert ( this . name + this . age + "hello" ) } return obj } var cat1 = CreatObj ( 'cat' , 6 ) var dog = CreatObj ( 'dog' , 8 ) cat1 . say () dog . say () //构造函数:解决实体是谁的实例化对象 function CreatObj ( name , age ){ this . name = name this . age = age this . say = function (){ alert ( this . name + this . age + "hello" ) } } var cat1 = new CreatObj ( 'cat' , 6 ) var dog = new CreatObj ( 'dog' , 8 ) cat1 . say () dog . say () /*区别:工厂要return ;构造函数自动返回

js面向对象编程

匿名 (未验证) 提交于 2019-12-03 00:22:01
转载至: js面向对象编程 var arr = []; arr.number = 10; //对象下面的变量:叫做对象的属性 //alert( arr.number ); //alert( arr.length ); arr.test = function(){ //对象下面的函数 : 叫做对象的方法 alert(123); }; arr.test();//方法 arr.push();//方法 arr.sort(); var obj=new Object();//创建一个空的对象 obj.name='小明'; //属性 obj.showName=function(){ //方法 alert(this.name);//this指向obj } obj.showName();//小明 var obj1=new Object();//创建一个空的对象 obj1.name='小明'; //属性 obj1.showName=function(){ //方法 alert(this.name);//this指向obj } obj1.showName();//小明 var obj2=new Object();//创建一个空的对象 obj2.name='小灰'; //属性 obj2.showName=function(){ //方法 alert(this.name);//this指向obj }

什么是Js原型?(3)(包括作用)

点点圈 提交于 2019-12-02 19:05:22
学习目标: 认识什么js是原型,原型、构成函数、实例对象关系;原型应用范围。 什么是原型 函数有原型,函数有一个属性叫prototype,函数的这个原型指向一个对象,这个对象叫原型对象。这个原型对象有一个constructor属性,指向这个函数本身。 实例对象也存在原型,实例对象存在原型对象是__proto__,__proto__一般被叫隐身原型,这个隐身原型有一个constructor属性,该属性指向创建该实例的构造函数。 构造函数、实例对象和原型直接关系 构造函数和实例对象关系 在每一个实例对象中的__proto__中同时有一个 constructor 属性,该属性指向创建该实例的构造函数: 实例对象__proto__和构造函数prototype关系 在每一个实例对象中的__proto__指向构造函数中prototype 两个是相等的。 构造函数,prototype原型对象,实例对象,proto,constructor,直接关系 原型作用 原型作用之一:数据共享,节省内存空间 原型作用之二:为了实现继承 原型如何数据共享,节约内存空间 JavaScript 面向对象编程 原型如何实现继承 比如,现在有一个"动物"对象的构造函数。 还有一个"猫"对象的构造函数。 怎样才能使"猫"继承"动物"呢? 如果"猫"的prototype对象,指向一个Animal的实例,那么所有"猫"的实例

JavaScript面试题(转)

前提是你 提交于 2019-12-02 12:02:06
JS相关问题 数组去重 function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(array[i]); } } return temp; } var aa = [1,2,2,4,9,6,7,5,2,3,5,6,5]; console.log(aa) console.log(uniq(aa)) 1、谈一谈JavaScript作用域链 当执行一段JavaScript代码(全局代码或函数)时,JavaScript引擎会创建一个作用域又称为执行上下文(Execution Context),在页面加载后会首先创建一个全局的作用域,然后每执行一个函数,会建立一个对应的作用域,从而形成一条作用域链。每个作用域都有一条对应的作用域链,链头是全局作用域,链尾是当前函数作用域。 作用域链的作用是用于解析标识符,当函数被创建时(不是执行),会将this,arguments,命名参数和该函数中所有局部变量添加到该当前作用域中,当JavaScript需要查找变量X的时候(这个过程称为变量解析),它首先会从作用域链中的链尾也就是当前作用域进行查找是否有X属性,如果没有找到就顺着作用域链继续查找,直到查找到链头

JS面向对象编程

夙愿已清 提交于 2019-12-02 03:02:07
JavaScript 面向对象编程 面向对象介绍 什么是对象 Everything is object (万物皆对象) 对象到底是什么,我们可以从两次层次来理解。 (1) 对象是单个事物的抽象。 一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。 (2) 对象是一个容器,封装了属性(property)和方法(method)。 属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,使用“属性”记录具体是那一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等)。 在实际开发中,对象是一个抽象的概念,可以将其简单理解为: 数据集或功能集 。 ECMAScript-262 把对象定义为: 无序属性的集合,其属性可以包含基本值、对象或者函数 。 严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。 提示:每个对象都是基于一个引用类型创建的,这些类型可以是系统内置的原生类型,也可以是开发人员自定义的类型。 什么是面向对象 面向对象不是新的东西,它只是过程式代码的一种高度封装,目的在于提高代码的开发效率和可维 护性。 面向对象编程 ——

js面向对象

廉价感情. 提交于 2019-12-01 18:28:58
一. JavaScript面向对象前言 1.1 什么是对象? Everything is object (万物皆对象)。 对象到底是什么,我们可以从两个层次来理解。 对象的组成 方法(有归属)----函数(自由的) 属性(有归属)----变量(自由的) 1.对象是单个事物的抽象 一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。 2.对象是一个容器,封装了属性(property)和方法(method) 属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为animal对象,使用“属性”记录具体是那一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等) 在实际开发中,对象是一个抽象的概念,可以将其简单理解为 : 数据集或功能集。 1.2 什么是面向对象? 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。它使用先前建立的范例,包括模块化,多态和封装几种技术。今天,许多流行的编程语言(如Java,JavaScript,C#,C+ +,Python,PHP,Ruby和Objective-C)都支持面向对象编程(OOP)。 相对于「一个程序只是一些函数的集合,或简单的计算机指令列表。

js 原型链构、造函数、原型与实例之间的关系

元气小坏坏 提交于 2019-11-30 02:15:28
面向对象编程都会涉及到继承这个概念,JS中实现继承的方式主要是通过原型链的方法。 一、构造函数、原型与实例之间的关系   每创建一个函数,该函数就会自动带有一个 prototype 属性。 该属性是个指针,指向了一个对象 ,我们称之为 原型对象 。什么是指针?指针就好比学生的学号,原型对象则是那个学生。我们通过学号找到唯一的那个学生。假设突然,指针设置 null, 学号重置空了,不要慌,对象还存在,学生也没消失。只是不好找了。   原型对象上默认有一个属性 constructor ,该属性也是一个指针,指向其相关联的构造函数。   通过调用构造函数产生的实例,都有一个 内部属性 ,指向了原型对象。所以实例能够访问原型对象上的所有属性和方法。      所以三者的关系是,每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。 通俗点说就是,实例通过内部指针可以访问到原型对象,原型对象通过constructor指针,又可以找到构造函数。    下面看一个例子: 1 2 3 4 5 6 7 8 9 function Dog (name) { this .name = name; this .type = 'Dog' ; } Dog.prototype.speak = function () {   alert( 'wang' ); }

JS基础知识大全

与世无争的帅哥 提交于 2019-11-29 07:30:34
JS基础知识 基本语法 *switch循环(设置表达式 x(通常是一个变量) 随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行) 不进行类型转换 var x; switch(x){ case true:console.log("x类型转换") ; default:console.log("x没有发生类型转换"); }//case没有发生类型转换 switch语句执行严格相等 *三元运算符 var a=1; console.log(a?"a has a value":"a not has a value");//a has a value //利用三元运算符,输出相应提示 n=2; var msg="数字"+n+"是"+(n%2===0?"偶数":"奇数");//偶数 console.log(msg);*/ //利用三元运算符,在字符串之间插入不同的值 *break和continue语句 会自动结束或跳出代码块 var num = 0; for (var i = 0 ; i < 10 ; i++){ console.log("i="+i); for (var j = 0 ; j < 10 ; j++){ console.log("j="+j); if( i == 5