zoukankan      html  css  js  c++  java
  • JS对象与包装类

    JS对象

    对象可理解为我们生活中的对象,你有对象吗,没有可以创建一个,她有名字,年龄,外观的特点,即属性;也有一些特长,即方法。

    实际对象是一组没有特定顺序的值,每个属性和方法都有一个名字,每个名字都和一个值一一对应。

    根据面向对象设计,我们可以创建任意多个具有相同属性和方法的对象。

    学对象的重要意义是封装一些数据以作他用。

    对象的特点

    • 封装
    • 继承
    • 多态
    • 具有特征和行为

    对象的创建方式

    对象字面量的方式(推荐)

    <script>
        var obj = {
            name: "mark",
            age: 23,
            sex: "男",
            sayHi: function () {
                console.log("大家好,我是" + this.name);
            }
        };
        console.log(obj.name);
        obj.sayHi();
    </script>

    其中name、age、sex就是属性,sayHi是方法;

    属性的增、删、改、查

    • 增  obj.wife = "xiao";
    • 改  obj.name = "xiao";
    • 删  delete obj.name
    • 查  obj.name

    工厂模式

    <script>
    
    //创建多个对象
         function creatStudent(name,age,sex,score) {
            var student = new Object();
            //对象的属性
            student.name = name;
            student.age = age;
            student.sex = sex;
            student.score = score;
            //对象的方法
            student.sayHi = function () {
                console.log("大家好,我是" + this.name);
            };
            //返回对象
            return student;
         }
         var s1 = creatStudent("niefeng",12,"男",36);
         var s2 = creatStudent("wjg",12,"男",36);
         var s3 = creatStudent("zdy",12,"男",36);
    </script>

    构造函数(推荐)

    构造函数和普通函数一模一样,只不过加new就会生成对象。

    注意:构造函数命名最好采用大驼峰命名规则(第一个字母大写),为了好区分。

    使用构造函数的主要问题是每个方法都会在实例上重新创建一遍。

    <script>
    	//对象的属性  是一个变量
    function Student(name,age,sex,score) {
    	this.name = name;
    	this.age = age;
    	this.sex = sex;
    	this.score = score;
    	//对象的方法
    	this.sayHi = function () {
    		console.log("大家好,我是" + this.name);
    	};
    	
    }
    	// 内存开辟空间,存储新创建的对象
    	// 会把this设置为当前对象
    	// 执行函数内部的代码,设置对象的属性和方法
    	// 返回新创建的对象
    	var s1 = new Student("niefeng",12,"男",36);
    	var s2 = new Student("nifeng",12,"男",36);
    	var s3 = new Student("nieng",12,"男",36); 
    </script>

    原型模式

    • 原型定义了构造函数对象的公共祖先,在函数出生的时候就已经定义好了的东西;
    • 原型也是对象;
    • 一个正常的对象应该是有自己的对象属性和方法,还有原型继承的属性和方法。
    <script>
        function Person() {
    
        }
        Person.prototype.name = "mark";
        Person.prototype.age = 21;
        Person.prototype.job = "前端";
        Person.prototype.sayHi = function () {
            console.log("大家好,我是" + this.name);
        };
        var person1 = new Person();
    </script>

    除了以上方法外还有些拓展和组合的创建方法:

    • 动态原型模式
    • 寄生构造函数模式
    • 稳妥构造函数

    包装类

    三个特殊的引用类型:

    Boolean, Number, String

    在js中,这几个基本类型都是有方法的。但是矛盾的是,Boolean, Number, String是基本类型不是对象,逻辑上应该是不能有方法的。

    实际上是因为访问的时候,后台做了一些隐式的处理:

    1. 创建Boolean, Number, String类型的一个实例;
    2. 在实例上调用指定方法;
    3. 销毁这个实例。

    引用类型和基本包装的主要区别就是对象的生存期。基本包装类型只在内存中存在一瞬间。

    <script>
        var num = 2;
        num.len = 3;
        // new Number(2).len = 3; //立即就销毁了
        // new Number(2).len;
        console.log(num.len); // undefined
    </script>

    每个基本包装类型都是提供了许多便捷的方法。

    Boolean类型

    • valueOf( )

    Number类型

    • valueOf( ):返回对象表示的基本类型的值
    • toLocaleString():返回数值的字符串
    • toString():返回数值的字符串
    • toFixed():按照指定的小数位返回数值的字符串表示
    • toExponential():指数表示法
    • toPrecision():返回固定大小格式或指数格式

    String类型

    1、字符方法

    • charAt()
    • charCodeAt()

    2、字符串操作方法:

    • concat()
    • slice()
    • substr()
    • substring()

    3、字符串位置方法:

    • indexOf():向后搜索
    • lastIndexOf():向前搜索

    4、trim():删除前后的空格

    5、字符串大小写转换:

    • toLowerCase()
    • toLocaleLowerCase()
    • toUpperCase()
    • toLocaleUpperCase()

    6、字符串的模式匹配方法

    • search()
    • match()
    • replace()

    7、localeCompare()

    8、fromCharCode()

  • 相关阅读:
    c++ string 的注意事项
    vim 高级技巧
    常用工具
    网络安全测试工具
    RMQ ST算法
    高精度模板
    CodeForces
    CodeForces
    线段树初探
    树状数组初探
  • 原文地址:https://www.cnblogs.com/markniefeng/p/10561858.html
Copyright © 2011-2022 走看看