构造函数和成员函数
来源:互联网 发布:网络攻防教育培训 编辑:程序博客网 时间:2024/05/16 15:54
1.对象-成员函数(方法)
比如:我们希望对象不但有属性,还希望它有行为(行为在程序中要靠函数来体现)
(1)添加speak函数,输出我是一个好人;
(2)添加jisuan函数,可以计算从1+…+1000的结果
(3)修改jisuan函数,该方法可以接收一个数n,计算从1+…+n的结果
(4)添加add成员函数,可以计算两个数的和
function Person(name,age){//这个就是使用传入的实际参数,初始化属性this.name=name;this.age=age;//输出自己的名字,这里this.show就是一个公开的函数,函数名是showthis.show=function(){document.write("名字="+this.name);}//添加jisuan函数,可以计算从1+...+1000的结果this.jisuan=function(n){var res=0;for(var i=1;i<=n;i++){res+=i;}return res;}}var p1=new Person("小白",90);p1.show();document.writeln("res="+p1.jisuan(10));
2.给一个对象添加(指定)函数的几种方式
(1)方式一
function Person(){this.name="abc";this.age=900; this.abc=function show1(){window.alert("hello"+this.name);}}var p1=new Person(); //创建一个p1对象p1.abc(); //调用
(2)方式二
function Person(){this.name="abc";this.age=900; }function show1(){window.alert("hello"+this.name);}var p1=new Person(); //创建一个p1对象p1.abc=show1; //把show1函数,给p1.abcp1.abc(); //调用
思考:window.alert(p1.abc)和window.alert(show1)会输出什么?
都会输出函数:
function show1(){window.alert("hello"+this.name);}
(3)方式三
function Person(){this.name="abc";this.age=900; }var p1=new Person();p1.abc=function show1(){window.alert("hello"+this.name)};p1.abc();
(4)方式四
前面的几种方法有一个问题:那就是每个对象独占函数代码,这样如果对象很多,则会影响效率,js设计者给我们提供另一个方法:原型法。这样多个函数可以共享函数代码,代码如下:
function Dog(){}//使用prototype类去绑定一个函数给shoutDog.prototype.shout=function(){window.alert("小狗");}var dog1=new Dog();dog1.shout();var dog2=new Dog();dog2.shout();
代码原理说明:
注意:==号的作用:
(1)当==的两边都是字符串的时候,则比较内容相等否。
(2)如==两边是数字,则数的大小是否相等。
(3)如==是对象或者是对象函数,则比较地址是否相等。
3.针对以下案例输出是什么?
(1)案例一
function Person(){this.name="abc1";this.age=900; }function show1(){window.alert("hello"+this.name);//这个this指window,此时this.name为空}var p1=new Person(); p1.abc=show1; show1();
输出 hello空格;
(2)案例二
function Person(){this.name="abc1";this.age=900; }var name="北京";function show1(){window.alert("hello"+this.name); //this.name为北京}var p1=new Person(); p1.abc=show1; show1();
输出hello北京;
(3)案例三
function Person(){this.name="abc";this.age=900;this.abc=function(v1,v2){window.alert(this.name+" "+this.age+" "+v1+" "+v2);}}var p1=new Person();p1.abc();p1.abc("北京","天津");
第一个输出abc 900 undefined undefined;
第二个输出abc 900 北京 天津;
(4)
function Person(){this.name="abc";this.age=900;this.abc=function(v1,v2){window.alert(this.name+" "+this.age+" "+v1+" "+v2);}}var p1=new Person();p1.name="中国"; //动态添加一个属性,此时p1.name会代替this.namep1.abc();p1.abc("北京","天津");
输出中国 900 北京 天津;
阅读全文
0 0
- 构造函数和成员函数
- const成员函数和构造函数
- C++成员函数和构造函数
- 拷贝构造函数和const成员函数
- 成员函数 构造函数
- 成员变量和构造函数执行顺序
- 构造函数和复制控制成员
- c++成员初始化和构造函数
- 成员变量和构造函数执行顺序
- 构造函数 与成员函数
- js构造函数的静态成员和实例成员
- 将构造函数和非成员函数虚拟化
- 浅谈C#中构造函数和成员函数
- 构造函数和成员函数的区别(通用)
- 构造函数和一般成员函数在继承中的区别
- 8.将构造函数和非成员函数“虚拟化”
- 将构造函数和非成员函数虚拟化
- 构造函数调用成员函数&成员函数是虚函数
- 谢尔宾斯基三角(Sierpinski triangle)
- viewpager实现启动页面的无限滑动、可点击导航点(导航点定位)(简单易懂)
- [简单逻辑学]逻辑学的基本原理——直言命题
- Sticky Footer绝对底部的实现
- 面试问题记录
- 构造函数和成员函数
- 10月集训test4
- 二进制中1的个数(剑指Offer 第 11 题)
- 实验二 线性表综合实验之《双链表》
- 有效数字-LintCode
- 强制类型转化小结
- 数组操作中出现的 两种错误
- Linux上如何查看某个进程的线程
- mybatis中trim标签的作用