js对象的特点 - CSDN
精华内容
参与话题
  • 什么是js面向对象?有什么特点

    千次阅读 2017-06-28 18:49:58
    什么是面向对象?面向对象是一种对现实世界理解和抽象的方法,...js中的面向对象面向对象js里有两个层次的含义,第一种是会使用面向对象函数;第二种是构造面向对象函数。js也是面向对象中的一种写法,不过相对于java

    什么是面向对象?

    面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。–引用自百度百科

    通俗的理解就是:万物皆对象!世界上的任何事和物都可以被视为对象,而我们需要关注的是对象本身可以实现的功能,不需要深入理解构成对象的元素。

    js中的面向对象

    面向对象在js里有两个层次的含义,第一种是会使用面向对象函数;第二种是构造面向对象函数。

    js也是面向对象中的一种写法,不过相对于java,js是一种弱数据类型,并不是严格意义上的面向对象。但是jq就是使用面向对象的写法创作出来的js库。

    面向对象的特点

    (“抽风机”谐音记忆)
    面向对象有四个特点:
    1. 抽象:抓住核心问题
    2. 封装:即把能够实现功能的函数写成封装起来,在面向对象里叫做方法。简单来说就是把实现功能的函数写成方法。
    3. 继承:继承的意思是,在实现同一种功能的前提下,新对象可以使用就对象的属性和方法。
    4. 多态:一个变量在引用不同类型的情况下的不同状态。多态开发在开发组件和模块化开发的时候能节省很多资源。

    举个例子说明面向对象

    // 这里的函数名在面向对象里叫做类
    function Create(n, s){
            // var obj = new Object();
            // obj叫做实例,同时也是对象,面向对象写法中系统会自动创建一个obj空对象
            // 对象属性
            this.name = n;
            this.sex = s;
            // this指针,在这里指的就是这个对象
    
            // 对象方法
            this.showName = function(){
                alert(n);
            };
            this.showSex = function(){
                alert(s);
            };
    
            // 返回对象
            // 同样,面向对象中系统会自动帮我们返回obj(即this)
            //return obj;
            //return this;
        }

    原型(prototype)

    原型可以用来构造函数的属性和方法,使这个构造函数的属性和方法成为公用的。使用原型的优点:在内存中节省资源,提高系统性能。

    下面举个例子说明原型:

    Array.prototype.sum = function(){
        var num = 0;
        for(var i=0;i<this.length;i++){
            num += this[i];
        }
        alert(num);
    };

    这是一个用原型构造的数组方法,将求和的sum方法挂在原型上,可以使这个方法被重复使用,当然,重点是节省内存资源。

    使用原型还有一个优点,就是优先级:
    原型的优先级类似于CSS中的优先级,没有使用原型的构造函数,就好比CSS中的行内样式,优先级高,而与原型挂钩的属性和方法 ,就像是style的内联样式,优先级低于行内样式。所以在调用同一种方法名的时候,系统会优先调用挂在原型上的方法!

    展开全文
  • js对象特点

    2014-07-04 01:19:22
    js中,有对象,没有类(但有构造函数)。

     在js中,有对象,没有类(但有构造函数)。有人说js是基于对象,而非面向对象。

    js中的对象只是一个“属性字典”,因此,我们可以直接造对象,不要类。

    js中的对象不依赖与类而存在,可以直接生成的。(json格式对象)

    js的对象的属性,也是可以任意添加和删除的。

    js中的对象,就是一组属性与值的集合,属性可以任意增减。方法和属性不必区分

    展开全文
  • 第一个:value 实际存储属性值 第二个:writable 控制值(value)是否可修改,默认是true可修改的 第三个:enumerable 控制是否可用for in遍历到默认是true,即使不能for in,默认是true; 第四个:configurable ...

    第一个:value
    实际存储属性值
    第二个:writable
    控制值(value)是否可修改,默认是true可修改的
    第三个:enumerable
    控制是否可用for in遍历到默认是true,即使不能for in,默认是true;
    第四个:configurable
    控制是否可以修改其他特性,是否可以删除属性,修改不可逆转默认是true;
    注意: configurable为false,在writable为true的情况下,它的特性值是可以改成false的;
    获取四大特征
    getOwnPropertyDescriptor

    var attrs = Object.getOwnPropertyDescriptor(obj, "id");
          console.dir(attrs);
    

    在这里插入图片描述
    1.value值:

    var obj = {
            id: "1001",
            name: "张三",
            salary: "10000",
          };
          Object.defineProperty(obj, "salary",{
                value:'12000'
            });
            console.log(obj.salary);
    

    效果图:
    在这里插入图片描述
    2.writable 控制值(value)是否可修改

    var obj = {
            id: "1001",
            name: "张三",
            salary: "10000",
          };
          Object.defineProperty(obj, "salary",{
            writable:false
            });
    

    效果图:
    在这里插入图片描述
    3.enumerable
    控制是否可用for in遍历
    为true的时候

    var obj = {
            id: "1001",
            name: "张三",
            salary: "10000",
          };
          Object.defineProperty(obj, "id", {
            enumerable: true,
          });
          for (var key in obj) {
            console.log(key, obj[key]);
          }
    

    效果图:
    在这里插入图片描述
    为false的时候

    var obj = {
            id: "1001",
            name: "张三",
            salary: "10000",
          };
          Object.defineProperty(obj, "id", {
            enumerable: false,
          });
          for (var key in obj) {
            console.log(key, obj[key]);
          }
    

    在这里插入图片描述
    4.configurable
    控制是否可以修改其他特性,是否可以删除属性
    修改其他属性时

    var obj = {
            id: "1001",
            name: "张三",
            salary: "10000",
          };
          Object.defineProperty(obj, "id", {
            configurable: false,
            enumerable: false,
          });
          Object.defineProperty(obj, "id", {
            enumerable: true,
          });
          for (var key in obj) {
            console.log(key, obj[key]);
          }
    

    在这里插入图片描述
    为false,

     var obj = {
            id: "1001",
            name: "张三",
            salary: "10000",
          };
          Object.defineProperty(obj, "id", {
            configurable: false,
          });
    

    在这里插入图片描述
    为true时

    var obj = {
            id: "1001",
            name: "张三",
            salary: "10000",
          };
          Object.defineProperty(obj, "id", {
            configurable: true,
          });
    

    在这里插入图片描述

    展开全文
  • 每一个对象(实例)都有与之相关联的三个特性:原型、类和可扩展性。下面讲解这些属性。 原型属性 在对象的定义中,我们知道,每个对象都和一个原型对象相关联。那么是如何关联的? 每个对象都有一个原型属性([...

    每一个对象(实例)都有与之相关联的三个特性:原型、类和可扩展性。下面讲解这些属性。

    原型属性

    在对象的定义中,我们知道,每个对象都和一个原型对象相关联。那么是如何关联的?

    每个对象都有一个原型属性([[prototype]]),它是一个内部属性,在浏览器实现中表现为_proto_属性。它是一个指针,指向原型对象。

    所有字面量创建的对象有一个相同的原型对象(Object.prototype)。

    使用new关键字创建的对象,原型为构造函数prototype属性的值(比如,数组的原型对象为Array.prototype)同时也继承Object.prototype。

     

     

     

     

    类属性

    对象的类属性(class)是一个字符串,用以表明该对象为何种类型。

    该属性为只读属性。

    默认的toString方法(继承自Object.prototype),将返回[object class],即[object 类属性]

    如果想获得对象的类,可以调用对象的toString(),然后提取已返回字符串的第8个到倒数第二个位置之间的字符串([object class])。不过,由于很多对象的toString()方法重写了,为了调用正确的toString()版本,必须间接调用Function.call()方法。

    function Student(school, major, name, age) {
        this.school = school;
        this.major = major;
        this.name = name;
        this.age = age;
    }
    var student = new Student("清华大学", "软件工程", "张三", "19");
    
    
    function Student1(school,major,name,age){
        this.school=school;
        this.school=major;
        this.name=name;
        this.age=age;
    }
    
    Student1.prototype.sayName=function(){
        alert(this.name);
    }
    
    var student2=new Student1("清华大学","软件工程","李四",26);
    
    function classOf(obj) {
        if (obj == null) return Null;
        if (obj == undefined) return Null;
        return Object.prototype.toString.call(obj).slice(8, -1);
    }
    
    console.log(classOf(student));    //返回Object
    console.log(classOf(student2));  //返回Object
    console.log(classOf(new Date())); //返回Date

    可扩展属性

     

    对象的可扩展性,用以表示该对象是否可以新添属性。

    所有内置对象和自定义对象都是显式可扩展的,宿主对象的可扩展性是由JavaScript引擎定义的。

    通过方法object.isExtensible(),来判断对象是否可扩展。(查询)

    通过方法object.preventExtensions(),将对象转换为不可扩展的。注意:一旦将对象转换为不可扩展,就无法将转换为可扩展的。(设置)

    object.seal()和object.preventExtensions(),除了能将对象设置为不可扩展外,还可以将对象的自身属性设置为不可配置的。(设置)

     

     

    展开全文
  • 1.JS中每个函数都存在有一个原型对象属性prototype。并且所有函数的默认原型都是Object的实例。 2.每个继承父函数的子函数的对象都包含一个内部属性_proto_。该属性包含一个指针,指向父函数的prototype。若父函数...
  • js就是面向对象的弱类型语言 语言特性:面向对象(要掌握创建对象的多种方式,继承的多种方式、原型链),动态/弱类型语言 动态语言的特性 var num=10;//num是一个数字类型 num="jim";//此时num又变成一个...
  • Js核心面向对象面试题

    万次阅读 2016-07-12 22:43:41
    JavaScript一门解释型(不是编译型)脚本语言,它的主要特点有:面向对象,弱类型,动态,基于原型的面向对象(对象)(不基于类) 3.讲下js的数据类型 Icon 基本类型: 数值(number),字符串(string),
  • JavaScript的十个思维导图

    千次阅读 多人点赞 2018-07-27 12:27:43
    1.javascript变量  2.javascript运算符    3.javascript数组  4.javascript流程语句  5.javascript字符串函数  6.javascript函数基础  7.javascript基础DOM操作  8.BOM浏览器对象...
  • javascript中实现继承的三种方式,简单明了一看就懂。。。。
  • js创建对象并赋值其属性

    万次阅读 2013-09-22 13:47:22
    var item = new Object(); item.id = "item-2";//搜索tab的id
  • TS | typescript与JavaScript的异同

    千次阅读 2019-08-30 09:28:28
    文章目录前言typescript 特点javascript 进化typescript 局限与解决 前言 随着前段工程化的深入,引入强类型和更多面向对象方法的typescript逐渐被更多开发者运用。 本文将介绍从以下三点介绍typescript与javascript...
  • JS的优缺点

    千次阅读 2018-07-02 14:50:18
    介绍JS的有缺点首先就先介绍下JS特点JavaScript介绍 JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有相对安全性的客户端脚本语言。是基于浏览器内核为html添加生命力的脚本语言。具有以下...
  • 3.创建对象Object.Create @吴穹Adam 看这两天同学们的反馈还是觉得比较难懂,因此,决定再举一个例子帮助大家理解吧,后面有关Scope和闭包Closure的精彩内容就只好晚一点写了! 其实,这个系列不是写给初学者的,...
  • JavaScript介绍

    千次阅读 2018-10-14 15:35:20
    JavaScript在前端技术中的作用?? HTML:它是整个网站的骨架。 CSS: 它是对整个网站骨架的内容进行美化(修饰)Javascript: 它能够让整个页面具有动态效果 javascript 的引入方式  内部引入方式  直接将 ...
  • JavaScript与java语法区别

    千次阅读 2019-04-07 10:26:21
    JavaScript语言组成 ECMA Script 所有脚本语言的规范,构成JS语言的核心基础 DOM Document Object Model 文档对象模型,用来操作网页中各种元素和标签 BOM Browser Object Model 浏览器对象模型,用来操作...
  • javascript是一门基于对象的语言 特点 不需要编译便可以直接执行 解释器为JS引擎,JS引擎为浏览器的一部分 是一门弱类型语言,采用弱类型变量类型,并未使用严格数据类型 JS有事件驱动机制,JS对用户的响应是以...
  • JavaScript 基础笔记

    万次阅读 多人点赞 2020-08-20 19:41:24
    JavaScript笔记及面试题
  • JavaScript学习总结(二)

    千次阅读 热门讨论 2013-08-17 21:40:19
    JavaScript重点:对象 总结。
  • jquery的特点及好处

    万次阅读 2019-01-18 20:10:14
    jQuery是一个轻量级的javascript框架,极大的简化了js的编程。 1.首先jQuery提供了强大的元素选择器。用于获取html页面中封装了html元素的jQuery对象。像常见的选择器有:基本选择器,层次选择器,过滤选择器,表单...
  • JavaScript

    千次阅读 2016-04-17 13:58:51
    1、JavaScript的概念 JavaScript是一种直译式脚本语言,已经被广泛用于web应用...JavaScript简称js特点: a:是一种解释性脚本语言(代码不需要进行预编译)。 b:主要用来向HTML页面添加交互行为。 c:可以直
1 2 3 4 5 ... 20
收藏数 121,375
精华内容 48,550
热门标签
关键字:

js对象的特点