传统构造函数存在的问题以及解决方法(原型)
来源:互联网 发布:mac 命令查看运行程序 编辑:程序博客网 时间:2024/06/14 02:07
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> //写一个构造函数,用来创建学生对象 //属性:姓名 年龄 身高 体重 //行为:学习 吃饭 看片 把妹 function studyMethod(){ console.log("我叫"+ this.name +"Good Good Study Day Day Up"); } function Student(stuName) { this.name = stuName; this.study = studyMethod; //方法* 8*10^20 } //如果构造函数没有参数,那么在调用的时候 小括号 可以省略 var stu = new Student("geng"); stu.study(); var stu1 = new Student("li"); stu1.study(); //如果在构造函数中定义函数,那么每次创建对象,都会重新创建该函数 //但是函数内部代码完全相同,就造成了资源浪费 //为了处理这个问题,我们要让所有的对象共用一个方法 //在构造函数外部定义好该函数,将该函数赋值给构造函数内的方法 //使用这种方式写好的方法中的this指向的就是调用该方法的对象 //this 谁调用就是谁 //******使用这种方式存在的问题******** //1.全局变量增多,造成污染 //2.代码结构混乱,不易维护 //---------------解决办法:用原型,简单介绍一下:------------------------------ function Person(name, status) { this.name = name; this.status = status; this.act = function () { console.log("演戏"); }; this.exercise = function () { console.log("就不强身健体"); } } var p = new Person("xyz","single"); //p.exercise(); //原型是个什么玩意儿? //在构造函数创建出来的时候,系统会默认的帮构造函数创建并关联一个神秘的对象,这个对象就是原型 //原型默认的是一个空的对象 //原型的作用 //原型中的属性和方法 可以被使用该构造函数创建出来的对象 使用 //如何访问构造函数的原型 // 构造函数.prototype console.log(Person.prototype); console.log(p.prototype); //注意 prototype是构造函数的属性,跟对象没有关系 //如何给原型对象添加属性和方法? //使用对象的动态特性 Person.prototype.exercise = function () { console.log("强身健体,保卫祖国"); } p.exercise(); //当使用对象去访问属性和方法的时候 //会首先在对象自己内部进行查找,如果找到了,就直接使用 //如果没有找到,就去原型中查找,查找到之后,使用 //如果原型中还没有, 如果是属性,就是Undefined //如果是方法,就报错 //p.sing(); //本身和原型中都没有 就报错 // -----------------------用原型的办法构造函数--------------------------------- function Person(name, age, gender) { this.name = name; this.age = age; this.gender = gender;// this.sayHello = function () {// console.log("你好我是" + this.name);// } } var p =new Person("张学友",18,"male"); var p1 = new Person("刘德华",19,"male"); Person.prototype.sayHello = function () { console.log("你好我是" + this.name); } Person.prototype["sing"] = function () { console.log("一千个伤心的母牛"); } p.sayHello(); p1.sayHello(); p.sing(); p1.sing(); //如何使用原型来解决构造函数存在的问题? //构造函数的原型对象中的成员,可以被该构造函数创建出来的所有对象访问 //而且,所有的对象共享该对象 //所以,我们可以将构造函数中需要创建的函数,放到原型对象中存储 //这样就解决 全局变量污染的问题 以及 代码结构混乱的问题(); </script></head><body></body></html>
阅读全文
0 0
- 传统构造函数存在的问题以及解决方法(原型)
- js高级——传统构造函数存在的问题
- javascript--面向对象(三)原型对象存在的问题及组合组合使用原型和构造函数
- js高级——使用原型解决构造函数存在的问题
- Javascript中函数、构造函数以及原型的用法区别
- //组合继承、(原型链继承以及借助构造函数继承)---解决超类传参问题以及共享问题。
- JavaScript的原型对象,以及它的构造函数
- js构造函数,工厂方法,以及原型设计的特性
- 从对象创建 到构造函数以及原型对象(prototype的使用,属性的共享)
- 彻底理解JS原型以及构造函数
- 传统BI存在的问题及解决办法
- js构造函数原型(prototype)问题分析(一段烂代码引发的博客)
- JS原型链、继承的问题与解决:组合继承、借用构造函数(未完)
- javascript原型对象存在的问题(3)
- Javascript中类的构造函数以及原型构造法,以及定义共有变量和私有变量
- 徐登沿的第八个程序(scanf()函数的%c格式符存在问题的解决方法)
- 原型对象存在的问题与解决问题
- 关于hibernate和jsp,以及中文编码问题的传统解决方法
- 【Python+OpenCV】目标跟踪-实现基本的运动检测
- HBuilder开发App教程
- 移动端webview canvas bug
- golang简单实现一个基于TLS/SSL的 TCP服务器和客户端
- Hive jdbc执行seelct 语句时报 return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
- 传统构造函数存在的问题以及解决方法(原型)
- 【数据结构】C语言实现顺序表(动态顺序表)
- MockNet -- Android网络接口开发与测试神器
- COM总结
- Adblock:简单强大的广告过滤沙盒
- centos7 安装apache Benchmark
- 34. Search for a Range
- HttpClient使用详解
- webstorm 允许他人通过ip访问项目