JavaScript---OOP浅谈1

对象化编程-------简单地去理解就是把javascript能涉及到的范围分成各种对象,对象下面再次划分对象。编程出发点多是对象,或者说基于对象。所说的对象既包含变量,网页,窗口等等。

注意:对象只是一种特殊的数据


1.基本对象

我们一般划分的角度还是从数据类型这方面
Number
String
Array
Math
Data  
这边我只是简单地罗列出来部分,具体的可以参考http://www.w3school.com.cn/js/js_obj_intro.asp


2.下面介绍创建类和对象的模式

a.简单方式:

var people = {};
people.name = "steven";
people.age = 23;
people.getName = function () {
	return "People's name is " + this.name;
};

console.log(people.getName()); //People's name is steven
console.log(people.age); //23

不好的地方就是:在创建多个对象的场景下会产生很多冗余的代码,耦合度不高!


b.工厂模式:

function makePeople(name, age, job) {
	var _obj = {};
	_obj.name = name;
	_obj.age = age;
	_obj.job = job;
	_obj.getName = function () {
		return "People's name is " + this.name;
	}
	return _obj;
}

var webdesigner = makePeople("steven", 23, "wendesigner");
console.log(webdesigner.getName); //People's name is steven
console.log(webdesigner.job) //wendesigner


不好的地方就是:实例化比较频繁


c.原型模式(prototype)

function People(){};
People.prototype = {
       constructor :People,
       name:"steven",
       age:23,
       job:"webdesigner",
       getName:function(){
             return "People's name is "+this.name;
      }
}
  
var webdesign = new People();
var carman = new People();
console.log(webdesign.getName());    //People's name is steven
console.log(carman.getName());    //People's name is steven


不好的地方就是:初始化参数不支持传递,还有就是原型的所有属性和方法会被所有的实例共享


d.混合模式(原型 + 构造函数)

function People(name.age.job) {
	this.name = name;
	this.age = age;
	this.job = job;
};
People.prototype = {
	constructor : People,
	getName : function () {
		return "People's name is " + this.name;
	}
}

var webdesigner = new People("steven", 23, "webdesigner");
var carman = new People("zyc", 24, "carman");
console.log(webdesigner.getName()) //People's name is steven
console.log(carman.getName()) //People's name is zyc


不好的地方就是:对象的属性和方法也是共用的


e.闭包下的私有变量模式

(function () {
	var name = "";
	People = function (val) {
		name = val;
	};
	People.prototype = {
		constructor : People,
		getName : function () {
			return "People's name is " + name;
		}
	};
})();

var webdesigner = new People("steven");
console.log(webdesigner.name); //undefined
console.log(webdesigner.getName()); //People's name is steven

var carman = new People("zyc");
console.log(carman.name); //undefined
console.log(carman.getName()); //People's name is zyc

不好的地方就是:初级程度的代码不是很让人理解


如果我写的有问题,还是对这里的内容有疑惑,都希望大家提出来!




<think>好的,我现在要解决用户提到的Kali Linux旧源未签名错误的问题。用户遇到的错误是使用旧源'http://old.kali.org/kali sana InRelease'导致的,系统提示仓库未签名,无法安全更新。我需要根据已有的引用信息和自己的知识来提供解决方案。 首先,我需要回忆一下Kali Linux的源配置。通常,这类问题是由于软件源过期密钥失效引起的。用户提到的错误信息中提到EXPKEYSIG ED444FF07D8D0BF6,这可能与仓库的签名密钥有关。但用户现在使用的是旧源sana,而引用中提到的错误是kali-rolling的密钥问题,不过问题根源可能类似,都是密钥过期源地址不正确。 根据引用中的例子,比如引用[1]和[2],用户尝试使用不同的镜像源(如阿里云、USTC)时出现GPG错误解决办法通常是更新密钥者更换正确的源。而用户现在的问题是旧源sana,这可能是一个已经不再支持的版本,所以需要更换到当前支持的源。 步骤应该是: 1. 检查当前系统中的源配置,确认是否确实在使用旧的sana源。 2. 替换旧的源地址为官方推荐的最新源,比如kali-rolling的镜像。 3. 导入正确的GPG密钥,确保仓库签名有效。 4. 执行更新命令验证问题是否解决。 另外,可能需要手动下载并安装新的密钥,者使用wget命令从官方获取密钥并添加到apt-key中。例如,引用中提到的ED444FF07D8D0BF6可能已经过期,需要更新。 还需要注意,Kali Linux的不同版本可能对应不同的仓库名称,比如sana是旧版本,现在应该使用kali-rolling。因此,用户需要更新源列表中的条目,将sana替换为kali-rolling,并选择合适的镜像源。 另外,用户可能还需要清理旧的源列表,避免残留的旧配置导致问题。例如,检查/etc/apt/sources.list文件以及/etc/apt/sources.list.d/目录下的文件,删除注释掉所有涉及旧源sana的行。 最后,执行apt-get updateapt-get upgrade来测试是否解决问题。如果仍有GPG错误,可能需要手动导入新的密钥,比如使用apt-key adv命令。 总结解决方案步骤: 1. 备份当前源列表。 2. 编辑源列表,替换旧源为最新镜像源。 3. 导入新的GPG密钥。 4. 更新并升级系统。 同时,需要提醒用户在操作前备份重要数据,避免操作失误导致系统问题。</think>### 解决方案:Kali Linux旧源未签名错误处理 #### 问题根源分析 错误提示`The repository 'http://old.kali.org/kali sana InRelease' is not signed`表明: 1. 系统正在使用已弃用的旧版Kali源(`sana`为2016年发布的版本,当前官方仅支持`kali-rolling`)[^1][^4]; 2. 旧仓库的GPG密钥已失效,导致APT无法验证软件包安全性。 --- #### 分步解决方法 1. **备份当前源列表** ```bash sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak ``` 2. **更新为官方推荐镜像源** 编辑源配置文件: ```bash sudo nano /etc/apt/sources.list ``` 删除注释所有包含`old.kali.org``sana`的行,替换为以下内容(以阿里云镜像为例): ```plaintext deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib ``` 3. **手动导入最新GPG密钥** ```bash wget -q -O - https://archive.kali.org/archive-key.asc | sudo apt-key add ``` 4. **执行系统更新** ```bash sudo apt-get update && sudo apt-get upgrade -y ``` --- #### 验证结果 若操作成功,终端应输出类似以下信息: ```plaintext Hit:1 http://mirrors.aliyun.com/kali kali-rolling InRelease Reading package lists... Done ``` --- #### 注意事项 - 若使用其他镜像(如清华、中科大),需确保URL中为`kali-rolling`而非`sana`[^2][^3] - 若仍报GPG错误,尝试强制刷新密钥: ```bash sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ED444FF07D8D0BF6 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值