博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript学习:闭包和prototype原型使用基础
阅读量:4325 次
发布时间:2019-06-06

本文共 3655 字,大约阅读时间需要 12 分钟。

闭包

function Person(name) {            this.Username = name;            var Userage = 18;            //通过这种方法可以模拟私有成员            //类似于private成员            this.setAge = function (age) {               Userage = age;            }            //类似于public成员            this.getAge = function () {                return Userage;            }        }        var p1 = new Person("huahuah");        p1.setAge(100);               alert(p1.getAge())        //-------------------------------------------------        var x = 100;        //执行3 找到x定义        function f1() {            var y = 101;            //执行2,找到x未定,继续找            alert(y);            alert(x);            //整个return函数就是常说的闭包            //由此函数开始执行1,找不到x            //闭包靠的是作用域链作用的,必须一层一层释放            return function () {                var y = 99;                alert(x);                alert(y);                //向上找            }        }        function f1() {            var funs = new Array();            //2:找到i,但是i已经循环遍历了i=10            for (var i = 0; i < 10; i++) {                //1:先执行闭包内,找不到i,搜索外层                funs[i] = function () {                    alert(i);                }            }            //3:返回i=10            return funs;        }        //4:声明myfuns=f1()        var myfuns = f1();        for (var n = 0; n < myfuns.length; n++) {            //5:因为f1的长度=10,所以n的长度也=10,循环遍历弹出n的值            myfuns[n]();        }

原型:

//prototype原型  function Person(name, age, email) {            this.UserName = name;            this.UserAge = age;            this.UserEmail = email;            this.sayHi=function(){                alert('你好,我的名字是' + this.UserName + '今年' + this.UserAge + '岁了' + '我的联系邮箱是' + this.UserEmail);            }            this.sayHellp= function () {                alert()            }        }        //通过构造函数创建的对象 都是完全独立的对象 对象与对象之间是没有关系的,类似c#中的对象        var p1 = new Person("黄", "18", "595892312@qq.com");        p1.sayHi();        var p2 = new Person("huang", "23", "123@163.com");        alert('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');        p2.sayHi();        p1.UserName = "zhen";        p1.UserAge = 15;        p1.UserEmail = "854658496@sina.com";        p1.sayHi();///原型2 //定义构造函数        function Person(name, age, email) {            this.UserName = name;            this.UserAge = age;            this.UserEmail = email;        }        //_proto_        //prototype是person对象的原型对象        //在person的原型对象中加一个sayHi()方法        Person.prototype.sayHi = function () {            alert("My name is" + this.UserName + "," + this.UserAge + "old,My Email is" + this.UserEmail);        }        //通过构造函数创建函数对象        var p1 = new Person("susan", 18, "suan@gogle.com");        p1.sayHi();        var p2 = new Person("黄", 23, "5231@qq.com");        p2.sayHi();////通过原型实现扩展方法 //给字符串对象原型添加haha方法        String.prototype.haha=function (){            return this+"☆";        };        //创建字符串对象        var msg = '56465455645';        msg = msg.haha();        alert(msg);///通过原型prototype实现继承  //js中没有类的概念,继承是通过对象和对象来实现的        function Person(name,age,email) {            this.Username = name;            this.Userage = age;            this.Useremail = email;        }        Person.prototype.sayHi = function () {            alert("我的名字叫做" + this.Username + "今年" + this.Userage + "岁了,我的邮箱是:" + this.Useremail);        };        //student        function Student(sid) {            this.student_id = sid;        }        //继承 通过prototype=p1继承Person中的属性        Student.prototype = new Person("黄", 18, "huang@163.com");        var s1 = new Student('1564156165');        s1.Username = '李';        alert(s1.Username);

 

转载于:https://www.cnblogs.com/shapaozi/p/6854624.html

你可能感兴趣的文章
java ee课程目标
查看>>
Shell 脚本进程并发&进程数控制
查看>>
Java基础String类
查看>>
yum -y list java* 查看当前java的版本
查看>>
Linux创建用户
查看>>
github中markdown语言的使用规则
查看>>
clean-css 安装 使用
查看>>
Java设计模式(Design Patterns In Java)读书摘要——第1章 绪论
查看>>
Linux下Nginx安装
查看>>
LVM扩容之xfs文件系统
查看>>
Hbase记录-client访问zookeeper大量断开以及参数调优分析(转载)
查看>>
2010年ImagineCup,我们共同走过
查看>>
代码片段收集
查看>>
vue-cli3创建项目时报错
查看>>
输入1-53周,输出1-53周的开始时间和结束时间
查看>>
实验二
查看>>
shell——按指定列排序
查看>>
crash 收集
查看>>
Oracle数据库索引使用及索引失效总结
查看>>
507 LOJ 「LibreOJ NOI Round #1」接竹竿
查看>>